어흥

[Oracle] Plan 본문

Oracle

[Oracle] Plan

라이언납시오 2020. 7. 9. 10:38
728x90
반응형

1. Plan이란?

- CBO(Cost Based Optimizer: 최소의 비용으로 최대 효과를 추구) 방식에서 Optimizer가 사용자에게 추천해주는 최적화된 계획(Plan)

- 대체적으로 괜찮은 Plan을 제공하지만, Plan은 완벽하지 않아서 항상 의심을 해야한다

 

 

2. Plan 결과화면 정리

  1) Select문을 통해 원하는 쿼리 수행

  2) 결과화면 확인

Cost = 440K: 440,000 비용발생

Card(Cardinality) = 13M: 13,000,000건의 접근하는 레코드 수

Bytes = 1G: 1,000,000,000(Card * 1Row의 총 길이)

 

결과화면에 'Access (Full)'이 출력되었다면 -> 전체 접근으로 지양해야 하는 쿼리문

위의 결과화면이 뜨는 이유

- 해당 쿼리에 대한 적절한 Index가 존재하지 않는다 -> Index 생성을 통해 해결 가능

- Index가 존재하지만, 부정확한 정보로 인해 Index를 사용하지 않는 경우 -> 힌트절을 사용해 해결 가능

- Index을 통한 접근보다 빠르거나 차이가 없는 경우 -> 데이터가 별로 없을 때 사용

 

3. Plan 읽는 방법

- Sibling 사이에선 먼저 나온것을 먼저 처리

- Child가 있는 경우, Child -> Parent순으로 처리

1	UNION ALL
2	    TABLE ACCESS ~
3	    	INDEX (UNIQUE SCAN) ~
4	    TABLE ACCESS ~
5	    	INDEX (UNIQUE SCAN) ~

위의 예시의 경우

- UNION ALL의 Child가 존재하므로 2~5줄이 먼저 수행 (2~5 -> 1)

- Table access 2개가 Sibling이므로 먼저 나온것 부터 수행 (2->3->4->5->1)

즉, 실행 순서: 2 -> 3 -> 4 -> 5 -> 1

728x90
반응형

'Oracle' 카테고리의 다른 글

[Oracle] MERGE INTO  (0) 2020.08.04
[Oracle] Sequence  (0) 2020.07.22
[Oracle] Index  (0) 2020.07.09
[Oracle] SQL (DDL, DML)  (1) 2020.07.07
Comments