SQL Advisor 소개
오라클 데이터베이스에서 SQL Advisor는 성능이 낮은 SQL 문장의 성능 개선을 위한 권장 사항을 제공하는 강력한 튜닝 도구입니다. SQL Advisor는 통계 점검, 접근 경로 분석, SQL 구조 분석 등 다양한 분석을 수행하여 최적의 실행 계획을 생성하도록 돕습니다. 또한, SQL 프로필 생성을 통해 옵티마이저가 더 나은 계획을 선택하도록 유도합니다.
SQL Advisor 실행 방법
SQL Tuning Advisor는 자동 또는 수동으로 실행할 수 있습니다. 자동 SQL 튜닝은 데이터베이스 유지 관리 윈도우에서 주기적으로 실행되며, 수동 SQL 튜닝은 필요에 따라 SQL Developer 또는 Cloud Control을 통해 수행할 수 있습니다.
예제: SQL Developer를 이용한 수동 SQL 튜닝
SQL Developer에서 특정 SQL 문장을 선택하고 “SQL 튜닝”을 클릭하면, SQL Advisor가 해당 문장을 분석하고 튜닝 권장 사항을 제공합니다.
-- SQL Developer에서 SQL 튜닝 Advisor 실행 예시
SELECT /*+ gather_plan_statistics */ *
FROM employees e, departments d
WHERE e.department_id = d.department_id
AND e.salary > 5000;
예제: DBMS_SQLTUNE 패키지를 이용한 SQL 튜닝
DBMS_SQLTUNE 패키지를 사용하여 SQL 튜닝 작업을 생성하고 실행할 수 있습니다.
-- 튜닝 작업 생성
DECLARE
task_name VARCHAR2(30);
BEGIN
task_name := 'my_tuning_task';
DBMS_SQLTUNE.CREATE_TUNING_TASK (
task_name => task_name,
sql_text => 'SELECT /*+ gather_plan_statistics */ * FROM employees e, departments d WHERE e.department_id = d.department_id AND e.salary > 5000',
description => 'Test SQL Tuning Task',
scope => 'COMPREHENSIVE',
time_limit => 60
);
END;
/
-- 튜닝 작업 실행
BEGIN
DBMS_SQLTUNE.EXECUTE_TUNING_TASK(task_name => 'my_tuning_task');
END;
/
-- 튜닝 결과 확인
SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK('my_tuning_task') FROM dual;
SQL Advisor 권장 사항
SQL Advisor는 다음과 같은 다양한 권장 사항을 제공할 수 있습니다.
- 객체 통계 수집: 옵티마이저가 최적의 실행 계획을 생성하는 데 필요한 통계가 오래되었거나 누락된 경우 통계 수집을 권장합니다.
- 인덱스 생성: 특정 쿼리의 성능을 향상시키기 위해 새로운 인덱스 생성을 권장합니다.
- SQL 문장 재작성: SQL 문장의 구조를 변경하여 성능을 개선할 수 있는 경우 재작성을 권장합니다.
- SQL 프로필 생성: 실행 계획에 큰 영향을 미치는 보조 통계를 SQL 프로필로 생성하여 옵티마이저가 더 나은 계획을 선택하도록 돕습니다.
Memory Advisor 소개
Memory Advisor는 오라클 데이터베이스의 메모리 구성 요소(SGA, PGA)의 크기를 최적화하는 데 도움을 주는 도구입니다. Memory Advisor는 시스템의 작업 부하를 분석하여 각 메모리 구성 요소에 적절한 크기를 권장합니다. 이를 통해 데이터베이스의 전반적인 성능을 향상시킬 수 있습니다.
Memory Advisor 활용 방법
Memory Advisor는 Enterprise Manager Cloud Control 또는 명령줄 인터페이스(CLI)를 통해 사용할 수 있습니다.
예제: Enterprise Manager Cloud Control을 이용한 메모리 튜닝
- Enterprise Manager Cloud Control에 로그인합니다.
- 성능 메뉴에서 “어드바이저 중앙”을 선택합니다.
- “메모리 어드바이저”를 선택합니다.
- Memory Advisor가 분석을 수행하고 메모리 구성 요소에 대한 권장 크기를 제공합니다.
- 권장 사항을 검토하고 적용합니다.
예제: 명령줄 인터페이스를 이용한 메모리 튜닝
다음은 `V$SGA_TARGET_ADVICE` 뷰를 사용하여 SGA_TARGET 초기화 매개변수의 적정 값을 결정하는 예제입니다.
SELECT SGA_SIZE_FACTOR,
SGA_SIZE,
ESTD_DB_TIME_FACTOR,
ESTD_PHYSICAL_READS
FROM V$SGA_TARGET_ADVICE
ORDER BY SGA_SIZE_FACTOR;
`V$PGA_TARGET_ADVICE` 뷰를 사용하여 PGA_AGGREGATE_TARGET 초기화 매개변수의 적정 값을 결정할 수도 있습니다.
SELECT PGA_TARGET_FACTOR,
PGA_TARGET_BYTES,
ESTD_PGA_CACHE_HIT_PERCENTAGE,
ESTD_OVERALLOC_COUNT
FROM V$PGA_TARGET_ADVICE
ORDER BY PGA_TARGET_FACTOR;
Memory Advisor 권장 사항
Memory Advisor는 시스템의 작업 부하를 분석하여 다음 사항에 대한 권장 사항을 제공합니다.
- SGA 크기 조정: Shared Pool, Buffer Cache, Large Pool 등 SGA 구성 요소의 크기를 조정하여 SQL 쿼리 및 PL/SQL 코드 실행 성능을 최적화합니다.
- PGA 크기 조정: 작업 영역 크기(Sort Area, Hash Area 등)를 조정하여 정렬 및 해시 조인 작업 성능을 최적화합니다.
결론
SQL Advisor와 Memory Advisor는 오라클 데이터베이스 성능을 최적화하는 데 필수적인 도구입니다. 이러한 도구를 효과적으로 활용하면 SQL 쿼리 및 PL/SQL 코드 실행 시간을 단축하고, 시스템의 전체적인 응답성을 향상시킬 수 있습니다. 이 가이드에서 제시된 예제와 설명을 바탕으로 여러분의 데이터베이스 환경에 맞게 SQL Advisor와 Memory Advisor를 활용하여 최고의 성능을 경험하시기 바랍니다.