Autonomous Database on Dedicated Exadata Infrastructure의 고성능 기능
이 문서에서는 Autonomous Database on Dedicated Exadata Infrastructure의 주요 성능 튜닝 기능에 대해 설명합니다.
이 섹션 전체에서 "귀하"라는 용어는 특정 작업을 수행할 책임이 있는 조직의 모든 사용자를 의미하는 데 광범위하게 사용됩니다. 일부 경우에는 DBA 응용 프로그램이고, 다른 경우에는 응용 프로그램 개발자입니다.
Autonomous Database에는 데이터베이스 성능을 자동으로 모니터링, 분석 및 최적화하는 몇 가지 기능이 포함되어 있습니다. Oracle Autonomous Database의 SQL 튜닝 및 성능 관리 기능에 대한 전체 목록과 사용 방법에 대한 지침은 Oracle Database 19c SQL Tuning Guide 또는 Oracle Database 23ai SQL Tuning Guide를 참조하십시오.
아래에 표시된 Autonomous Database의 주요 성능 튜닝 기능에 대한 광범위한 범주를 확인할 수 있습니다.
참고:
다음 이미지에서 더 자세히 탐색할 피쳐를 클릭할 수 있습니다.미리 정의된 데이터베이스 서비스
응용 프로그램이 데이터베이스에 연결하는 방법과 데이터베이스에 대해 SQL 호출을 코딩하는 방법에 따라 응용 프로그램의 트랜잭션 처리 및 보고 작업의 전반적인 성능이 결정됩니다.
참고:
미리 정의된 데이터베이스 서비스의 주요 특성 및 이러한 특성을 기반으로 하는 여러 데이터베이스 서비스 집합을 비교하는 테이블을 검토하여 응용 프로그램의 성능 요구 사항에 더 적합한 데이터베이스 서비스를 결정해야 합니다.접속 풀
Autonomous Database에 연결할 때 연결 풀을 사용하여 개별 연결을 반복적으로 생성하고 삭제하는 성능 오버헤드를 줄일 수 있습니다. 이것은 응용 프로그램이 데이터베이스와 상호 작용하는 성능에 큰 영향을 주는 또 다른 요소입니다.
일반적으로 연결 풀 사용은 지속적인 가용성을 제공하기 위해 응용 프로그램을 설계하거나 향상시킬 때만 고려됩니다. 그러나 개별 연결 대신 연결 풀을 사용하면 거의 모든 트랜잭션 처리 응용 프로그램에 도움이 될 수 있습니다. 연결 풀은 다음과 같은 이점을 제공합니다.
- 새 연결 객체가 생성되는 횟수를 줄입니다.
- 접속 객체 재사용을 승격합니다.
- 연결 프로세스를 빠르게 진행합니다.
- 접속 유지 관리에 소비되는 리소스 양을 제어합니다.
- 연결 객체를 수동으로 관리하는 데 필요한 코딩 작업량을 줄입니다.
특수 목적의 연결 기능
-
코로케이션 태그 지정은 특정 트랜잭션 처리 애플리케이션에서 유용한 기능 중 하나입니다. 응용 프로그램이 동일한 데이터베이스 서비스에 대해 반복적으로 연결을 설정하는 경우 동일 위치 배치 태그 지정을 사용하면 연결의 데이터베이스측에서 일반적으로 수행되는 로드 밸런싱 처리를 통과하여 이러한 모든 연결이 동일한 데이터베이스 Instance로 지정될 수 있습니다. 자세한 내용은 COLOCATION_TAG of Client Connections(Oracle Database 19c 또는 Oracle Database 23ai)을 참조하십시오.
-
공유 서버 구성은 Autonomous Database가 연결 풀링 없이 설계된 레거시 애플리케이션을 유지 관리할 수 있도록 지원하는 또 다른 기능입니다. Shared Server 구조를 사용하면 데이터베이스 서버가 적은 수의 서버 프로세스를 공유하는 많은 클라이언트 프로세스를 할 수 있습니다. 그러면 응용 프로그램이 지원할 수 있는 유저 수가 늘어납니다. 이러한 레거시 응용 프로그램에 대해 Shared Server 구조를 사용하면 응용 프로그램 자체를 변경하지 않고도 확장할 수 있습니다.
ACD(자율운영 컨테이너 데이터베이스)를 프로비전하는 동안 공유 서버 접속을 사용으로 설정할 수 있으며, 이 설정은 ACD(자율운영 컨테이너 데이터베이스)에 생성된 모든 데이터베이스에 적용됩니다. 지침은 자율운영 컨테이너 데이터베이스 생성을 참조하십시오.
세션 다중화 등의 기능을 포함하여 공유 서버에 대한 자세한 내용은 Oracle Database 19c Net Services Administrator's Guide 또는 Oracle Database 23ai Net Services Administrator's Guide 를 참조하십시오.
공유 서버 연결이 자율운영 컨테이너 데이터베이스에 대해 사용으로 설정된 후에는 접속 문자열을 변경할 필요가 없습니다. 기본 구성은 Dedicated로 설정됩니다.
주:
공유 서버 사용 자율운영 컨테이너 데이터베이스 아래에 생성된 특정 Autonomous Database에 대해 공유 서버를 사용 안함으로 설정할 수 없으며, 공유 서버 사용 자율운영 컨테이너 데이터베이스 아래에 생성된 Autonomous Database에 대해 전용 접속을 사용할 수 없습니다.
SQL 성능 튜닝 기능
훌륭한 응용 프로그램은 잘 작성된 SQL로 시작합니다. Oracle Autonomous Database는 고성능 애플리케이션을 구축하고 SQL 및 PL/SQL 코드를 검증할 수 있는 다양한 기능을 제공합니다. 이러한 기능 중 일부는 다음과 같습니다.
- 자동 인덱스화
- 최적기 통계 및 힌트
- SQL 계획 회귀 자동 해결
- runaway SQL 문의 자동 격리
- SQL 계획 관리
- SQL 튜닝 집합
- SQL Trace
애플리케이션을 개발할 때 이러한 기능이 작성하는 SQL 코드에 어떤 영향을 미치는지 빠르게 알아볼 수 있으므로 Oracle Database Actions(Autonomous Database에 내장됨) 및 Oracle SQL Developer(개발 시스템에 설치하는 무료 애플리케이션)에서 제공하는 SQL Worksheet를 사용하여 코드를 개선할 수 있습니다.
SQL 추적
응용 프로그램 작업이 예상보다 오래 걸리는 경우 구문 분석, 실행 및 패치(fetch) 단계에서 해당 SQL 문에 소요된 시간과 같은 세부 정보를 포함하여 이 작업의 일부로 실행된 모든 SQL 문에 대한 추적을 얻으면 성능 문제의 원인을 식별하고 해결하는 데 도움이 됩니다. Autonomous Database에서 SQL 추적을 사용하여 이를 달성할 수 있습니다.
SQL 추적은 Autonomous Database에서 기본적으로 사용 안함으로 설정됩니다. SQL Trace 데이터 수집을 시작하려면 이 기능을 활성화해야 합니다. SQL 추적을 사용으로 설정하고 사용하는 자세한 지침은 Autonomous Database에서 SQL 추적 사용을 참조하십시오.
최적기 통계
Autonomous Database는 사용자가 이 작업을 수동으로 수행할 필요가 없도록 옵티마이저 통계를 자동으로 수집하므로 통계가 최신 상태인지 확인하는 데 도움이 됩니다. 자동 통계 수집은 Autonomous Database에서 사용으로 설정되며 표준 유지 관리 창에서 실행됩니다.
주:
유지 관리 기간 시간 및 자동 옵티마이저 통계 수집에 대한 자세한 내용은 Oracle Database 19c Administrator's Guide 또는 Oracle Database 23ai Administrator's Guide를 참조하십시오.
옵티마이저 통계에 대한 자세한 내용은 Oracle Database 19c SQL Tuning Guide 또는 Oracle Database 23ai SQL Tuning Guide를 참조하십시오.
최적기 힌트
옵티마이저 힌트는 옵티마이저에 지침을 전달하는 SQL 문의 특수 주석입니다. 옵티마이저는 특정 조건에 의해 차단되지 않는 한 힌트를 사용하여 명령문에 대한 실행 계획을 선택합니다.
PARALLEL
힌트는 워크로드에 따라 다릅니다.
-
Autonomous Data Warehouse: Autonomous Database with Data Warehouse ignores optimizer hints and
PARALLEL
hints in SQL statements by default.응용 프로그램이 힌트를 사용하는 경우
ALTER SESSION
또는ALTER SYSTEM
를 사용하여 세션 또는 시스템 레벨에서OPTIMIZER_IGNORE_HINTS
매개변수를FALSE
로 설정하여 옵티마이저 힌트를 활성화할 수 있습니다.예를 들어, 다음 명령은 세션에서 힌트를 활성화합니다.ALTER SESSION SET OPTIMIZER_IGNORE_HINTS=FALSE;
ALTER SESSION
또는ALTER SYSTEM
를 사용하여 세션 또는 시스템 레벨에서OPTIMIZER_IGNORE_PARALLEL_HINTS
를FALSE
로 설정하여 SQL 문에서PARALLEL
힌트를 사용으로 설정할 수도 있습니다.예를 들어, 다음 명령은 세션에서PARALLEL
힌트를 사용으로 설정합니다.ALTER SESSION SET OPTIMIZER_IGNORE_PARALLEL_HINTS=FALSE;
-
Autonomous Transaction Processing: SQL 문에서 Autonomous Database honors 옵티마이저 힌트 및
PARALLEL
힌트를 기본적으로 제공합니다.ALTER SESSION
또는ALTER SYSTEM
를 사용하여 세션 또는 시스템 레벨에서OPTIMIZER_IGNORE_HINTS
매개변수를TRUE
로 설정하여 최적기 힌트를 사용 안함으로 설정할 수 있습니다.예를 들어, 다음 명령은 세션의 힌트를 비활성화합니다.
ALTER SESSION SET OPTIMIZER_IGNORE_HINTS=TRUE;
ALTER SESSION
또는ALTER SYSTEM
를 사용하여 세션 또는 시스템 레벨에서OPTIMIZER_IGNORE_PARALLEL_HINTS
를TRUE
로 설정하여 SQL 문에서PARALLEL
힌트를 사용 안함으로 설정할 수도 있습니다.예를 들어, 다음 명령은 세션에서
PARALLEL
힌트를 사용으로 설정합니다.ALTER SESSION SET OPTIMIZER_IGNORE_PARALLEL_HINTS=TRUE;
자동 인덱스화
자동 인덱싱은 Autonomous Database의 인덱스 관리 작업을 자동화합니다. 자동 인덱싱은 Autonomous Database에서 기본적으로 사용 안함으로 설정됩니다.
인덱스를 수동으로 생성하려면 데이터 모델, 응용 프로그램 및 데이터 분산에 대한 깊은 지식이 필요합니다. 과거에는 DBA가 생성할 인덱스를 선택할 책임이 있었으며, DBA가 조건 변경에 따라 선택 사항을 수정하거나 인덱스를 유지 관리하지 않은 경우도 있었습니다. 결과적으로 개선 기회가 손실되었으며 불필요한 인덱스를 사용할 경우 성능이 저하될 수 있습니다.
Autonomous Database의 자동 인덱싱 기능은 애플리케이션 워크로드를 모니터링하고 인덱스를 자동으로 생성 및 유지 관리합니다.
참고:
이 지침을 설명하는 "체험해보기" 대안을 제시하려면 Lab 14: Automatic Indexing을 Oracle Autonomous Database Dedicated for Developers and Database Users Workshop에서 실행하세요.- 자동 인덱스화를 사용으로 설정하려면
DBMS_AUTO_INDEX.CONFIGURE
프로시저를 사용합니다. 예를 들어, 아래 명령문을 실행하면 데이터베이스에서 자동 인덱스화가 가능해지고 SQL 문에서 사용할 수 있도록 표시되는 인덱스로 새 자동 인덱스가 생성됩니다.EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','IMPLEMENT');
DBMS_AUTO_INDEX
패키지를 사용하여 자동 작업에 대해 보고하고 자동 인덱스화 환경 설정을 지정합니다.주:
주: 자동 인덱스화가 활성화되면 자동 인덱스에 대한 인덱스 압축이 기본적으로 활성화됩니다.
DBMS_AUTO_INDEX.CONFIGURE
프로시저를 사용하여 자동 인덱스화를 사용 안함으로 설정합니다. 예를 들어, 아래 명령문을 실행하면 새 자동 인덱스가 생성되지 않도록 데이터베이스에서 자동 인덱싱이 비활성화됩니다. 그러나 기존 자동 인덱스는 활성 상태로 유지됩니다.EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','OFF');
자세한 내용은 Oracle Database 19c Administrator's Guide의 Managing Auto Indexes 또는 Oracle Database 23ai Administrator's Guide를 참조하십시오.
빠른 수집
빠른 수집은 데이터베이스에 대한 높은 빈도의 단일 행 데이터 삽입 처리를 최적화합니다. 빠른 수집은 삽입을 디스크에 기록하기 전에 버퍼링하기 위해 Large Pool을 사용하여 데이터 삽입 성능을 향상시킵니다.
가장 빠른 속도는 집계에 중요한 가치가 있지만 반드시 완전한 ACID 보장이 필요한 것은 아닌 많은 정보 데이터를 생성하는 응용 프로그램을 지원하는 것입니다. Internet of Things (IoT)의 많은 응용 프로그램은 센서 데이터, 스마트 미터 데이터 또는 트래픽 카메라와 같은 신속한 "방화 및 잊어 버림"형 워크로드를 가지고 있습니다. 이러한 애플리케이션의 경우 나중에 분석할 수 있도록 데이터를 수집하여 대용량으로 데이터베이스에 기록할 수 있습니다.
빠른 수집은 데이터가 기록되는 일반적인 Oracle Database 트랜잭션 처리와는 매우 다르며 데이터베이스에 "쓰기"한 후(즉, 커밋된 경우) 손실되지 않습니다. 최대 수집 처리량을 달성하기 위해 일반적인 Oracle 트랜잭션 메커니즘은 생략되며 모든 데이터가 실제로 데이터베이스에 기록되었는지 확인하는 것은 응용 프로그램의 책임입니다. 데이터가 데이터베이스에 기록되었는지 확인하기 위해 호출할 수 있는 특수 API가 추가되었습니다.
빠른 수집 및 이 기능 사용과 관련된 단계에 대한 개요는 Oracle Database 19c Performance Tuning Guide의 Using Fast Ingest 또는 Oracle Database 23ai Performance Tuning Guide를 참조하십시오.
-
최적기가 힌트를 사용하도록 설정: 세션 또는 시스템 레벨에서
optimizer_ignore_hints
매개변수를FALSE
로 적절하게 설정합니다.Autonomous Database 워크로드 유형에 따라 시스템 레벨에서 기본적으로
optimizer_ignore_hints
가FALSE
로 설정될 수 있습니다. 자세한 내용은 Optimizer Statistics를 참조하십시오. - 빠른 수집을 위한 테이블 생성: 빠른 수집에 적격한 테이블에 대한 제한 사항은 Oracle Database 19c Performance Tuning Guide 또는 Oracle Database 23ai Performance Tuning Guide를 참조하십시오(지정된 특성을 가진 테이블은 빠른 수집을 사용할 수 없음).
Oracle Scheduler를 사용하여 미리 정의된 작업 클래스
Autonomous Database에는 Oracle Scheduler와 함께 사용할 job_class
값이 미리 정의되어 있습니다. 이러한 작업 클래스를 사용하면 공통 특성 및 동작을 공유하는 작업을 더 큰 엔티티로 그룹화하여 각 클래스에 할당된 리소스를 제어함으로써 이러한 클래스에서 우선 순위를 지정할 수 있습니다.
미리 정의된 작업 클래스를 사용하면 중요한 작업에 우선 순위가 있고 완료할 리소스가 충분하도록 보장할 수 있습니다. 예를 들어, 중요한 프로젝트에서 데이터 웨어하우징 작업을 모두 한 클래스로 결합하고 사용 가능한 리소스의 높은 비율을 할당하여 다른 작업보다 우선 순위를 지정할 수 있습니다. 또한 작업 클래스 내의 작업에 상대 우선 순위를 지정할 수 있습니다.
미리 정의된 job_class
값 TPURGENT
, TP
, HIGH
, MEDIUM
및 LOW
는 해당 Consumer Group에 매핑됩니다. 이러한 작업 클래스를 사용하여 작업이 DBMS_SCHEDULER.CREATE_JOB
로 실행되는 소비자 그룹을 지정할 수 있습니다.
DBMS_SCHEDULER.CREATE_JOB
프로시저는 Autonomous Database의 job_type
매개변수에 대해 PLSQL_BLOCK
및 STORED_PROCEDURE
작업 유형을 지원합니다.
예를 들어, 다음을 사용하여 HIGH
소비자 그룹에서 실행할 단일 일반 작업을 생성합니다.
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'update_sales',
job_type => 'STORED_PROCEDURE',
job_action => 'OPS.SALES_PKG.UPDATE_SALES_SUMMARY',
start_date => '28-APR-19 07.00.00 PM Australia/Sydney',
repeat_interval => 'FREQ=DAILY;INTERVAL=2',
end_date => '20-NOV-19 07.00.00 PM Australia/Sydney',
auto_drop => FALSE,
job_class => 'HIGH',
comments => 'My new job');
END;
/
Oracle Scheduler 참고 사항:
-
DBMS_SCHEDULER.CREATE_JOB
를 사용하려면 특정 역할 또는 권한에 대한 추가 권한이 필요할 수 있습니다.ADMIN
사용자와DWROLE
를 가진 사용자는CREATE SESSION
및CREATE JOB
권한이 필요합니다. 사용자에게DWROLE
이 없는 경우CREATE SESSION
및CREATE JOB
권한에 대한 권한 부여가 필요합니다. -
instance_id
작업 속성은 Autonomous Database에서 실행되는 Oracle Scheduler 작업에 대해 무시됩니다.
Oracle Scheduler 및 DBMS_SCHEDULER.CREATE_JOB
에 대한 자세한 내용은 Oracle Database 19c의 Scheduling Jobs with Oracle Scheduler 또는 Oracle Database 23ai를 참조하십시오.
작업 속성에 대한 자세한 내용은 SET_ATTRIBUTE Procedure in Oracle Database 19c 또는 Oracle Database 23ai를 참조하십시오.
성능 모니터링 및 튜닝 도구
도구 | 세부정보 |
---|---|
성능 허브 |
Oracle Cloud Infrastructure(OCI) 콘솔에서 사용 가능한 기능이 풍부한 도구를 제공합니다. Performance Hub는 Oracle Database Actions 및 Oracle Enterprise Manager와 함께 내장되어 제공됩니다. 자세한 내용은 성능 허브를 사용하여 데이터베이스 성능 모니터링을 참조하십시오. |
Autonomous Database 측정항목 |
Autonomous Database 측정항목을 사용하면 CPU 및 스토리지 활용률, 성공/실패한 데이터베이스 로그인 및 접속 시도 횟수, 데이터베이스 작업, SQL 질의, 트랜잭션 등과 같은 유용한 정량 데이터를 측정할 수 있습니다. 측정항목 데이터를 사용하여 Autonomous Database 리소스 관련 문제를 진단하고 해결할 수 있습니다. 필요 조건, 사용량, Autonomous Database on Dedicated Exadata Infrastructure에 사용 가능한 측정지표 목록과 같은 자세한 내용은 Autonomous Database Metrics로 데이터베이스 모니터링을 참조하십시오. |
AWR(자동 작업 로드 저장소) 및 ADDM(자동 데이터베이스 진단 모니터) |
일반적으로 사용되는 다른 두 가지 도구는 AWR(Automatic Workload Repository) 및 ADDM(Automatic Database Diagnostic Monitor)입니다. AWR은 Oracle 데이터베이스에 대한 성능 관련 통계를 저장하고, ADDM은 AWR 데이터를 정기적으로 분석하고, 성능 문제의 근본 원인을 찾아내고, 문제 해결을 위한 권장 사항을 제공하고, 시스템의 문제 없는 영역을 식별하는 진단 도구입니다. AWR은 기록 성능 데이터의 Repository이므로 ADDM은 이벤트 후 성능 문제를 분석할 수 있으므로 시간과 리소스를 절약하여 문제를 재현할 수 있습니다. 이러한 도구 사용에 대한 지침은 물론 데이터베이스 성능 모니터링 및 튜닝에 대한 자세한 내용은 Oracle Database 19c Performance Tuning Guide 또는 Oracle Database 23ai Performance Tuning Guide를 참조하십시오. AWR 및 ADDM은 Performance Hub에서도 사용할 수 있습니다. 자세한 내용은 성능 허브를 사용하여 데이터베이스 성능 모니터링을 참조하십시오. 데이터베이스 성능 모니터링 및 튜닝에 대한 간략한 소개는 Oracle Database 19c 2 Day + Performance Tuning Guide 또는 Oracle Database 23ai 2 Day + Performance Tuning Guide를 참조하십시오. |