CS/DataBase

ORACLE 실행계획, Hint, SQL 튜닝

prden 2022. 12. 31. 13:46

1. 실행계획 

실행계획이란 사용자가 요청한 SQL을 최적으로 수행하고자 옵티마이저가 수립한 일련의 처리 절차를 트리구조로 표현한 것이다. (실행계획을 통해 SQL이 테이블을 스캔하는지, 인덱스를 스캔하는지 확인할 수 있다.)

 

SQL을 수행하기 전에 실행계획을 확인하려면 explain plan 명령어를 사용한다. 이 명령어를 사용하기 전에 plan_table을 생성해야 하며 아래 스크립트 실행하면 plan_table 만들어진다. 

SQL> @?/rdbms/admin/utlxplan.sql

하지만 10g 버전부턴 오라클이 기본적으로 sys.plan_table$ 테이블을 만들고 'PLAN_TABLE'으로 synonym도 생성하기 때문에 위 스크립트 실행하지 않아도 된다.

 

실행 계획을 보는 방법에는 EXPLAIN PLAN과 SET AUTORACE, SQL TRACE, DBMS_XPLAN 등이 있다.

 

https://yooloo.tistory.com/144

 

Oracle - 실행계획 보는 방법

실행계획 Oracle 실행 계획은 요청된 데이터에 액세스하는 방법을 보여주는 세부 단계의 집합입니다. 실행 계획의 각 단계는 행을 생성하거나 소비하는 데이터베이스 연산자 집합입니다. 실행계

yooloo.tistory.com

2. 오라클 힌트 :  옵티마이저에게 힌트를 주는 것

 

실행계획을 보고 옵티마이저에게 힌트를 줘야한다. (힌트는 지시구문이며, sql과 함께 사용한다.)

개발자가 원하는 의도대로 실행계획을 변경할 수 있게 하여 직접 최적의 실행경로를 작성해 주는 것이다.

 

 ex) SELECT /* + 힌트내용*/

select /*+ INDEX_DESC (tbl_board tbl_board_pk)*/ * from tbl_board;

실행계획을 보고 튜닝 단계에서 힌트를 준다. 쿼리 작성시부터 힌트 주는 것이 아니다.

 

3. SQL 튜닝

1) ORDER BY에 대해 : 데이터 양이 많을 수록 많은 리소스를 소모한다. ODRDER BY 대신 인덱스 타도록 수정 필요 인덱스는 이미 정렬된 구조로 존재하기 때문에 별도의 SORT 작업이 필요없다. ROWID는 인덱스와 실제 테이블을 연결하는 고리로, 데이터베이스 내 주소 값과 같다. 

 

 

 

https://eunjk.tistory.com/9

 

[ORACLE]실행 계획(Execution Plan) 확인하는 법

[기초지식] [SQL 옵티마이저] 사용자가 원하는 작업을 가장 효율적으로 수행할 수 있는 최적의 데이터 엑세스 경로를 선택해주는 DBMS 핵심 엔진. 쿼리를 수행하는 데 후보군이 될만한 실행계획들

eunjk.tistory.com

 

'CS > DataBase' 카테고리의 다른 글

Lock, DeadLock, Blocking  (0) 2023.03.10
Pro*C  (0) 2023.01.08
ORACLE 식별자  (0) 2022.12.31
DB ConnectionPool  (0) 2022.12.30
Lock 과 트랜잭션 동시성 제어  (0) 2022.12.29