Oracle Query Plan 을 확인하다보면 Partition Range Iterator 와 Range ALL 플랜을 접하게 된다.
무슨 차이가 있을까?
Partition 이 무엇인지는 구글링 해보면 많이 확인 할 수 있다.
테이블 또는 인덱스를 실제로 나눠져 저장되지만, 논리적으로 하나의 테이블/인덱스로 관리하기 위해 사용된다.
성능 상 이점 또한 있다. 자세한 설명은 아래 링크를 참고하자.
이를 알기 위해서는 Partition Pruning 개념을 먼저 알아야 한다.
Partition Pruning
- 가지치기라는 의미를 갖고 있으며, 불필요한 Partition Access 를 줄이는 작업
- WHERE 절 조건과 관련된 Partition 만 Access 하므로 성능상 이점
- DBMS 가 알아서 처리하므로 사용자가 별도로 할 일은 없음
- Partition Key가 변경되거나 DataType 이 변경되면 Pruning 이 불가능해질 수 있음.
결론...
Partition Range Iterator 플랜으로 쿼리가 수행되더라도 WHERE 절 조건이 전체 범위를 대상으로 하고 있다면, Partition Range ALL 과 차이가 없다.
Partition Pruning 효과가 있을 때 빛을 발휘한다. 적절히 잘 사용하자.
참고자료
- http://www.orafaq.com/tuningguide/partition%20prune.html
- http://www.dator.co.kr/encore/textyle/205656
- http://docs.oracle.com/cd/E18283_01/server.112/e16541/part_avail.htm
- http://www.dbguide.net/db.db?cmd=view&boardUid=148227&boardConfigUid=9&categoryUid=216&boardIdx=141&boardStep=1
- http://www.gurubee.net/lecture/1906
- http://wiki.gurubee.net/pages/viewpage.action?pageId=4949360
- http://www.dator.co.kr/encore/textyle/205656
- http://www.dator.co.kr/enda/textyle/91206
- http://wiki.gurubee.net/pages/viewpage.action?pageId=6260332
- http://f1angel.tistory.com/136
'DB > Oracle' 카테고리의 다른 글
Oracle lock session 처리하기 (0) | 2016.07.14 |
---|---|
ORA-01722: 수치가 부적합합니다 (0) | 2016.07.01 |
ORA-01861:literal does not match format string (0) | 2015.12.31 |
ORA-64203: 문자 집합 변환 후 대상 버퍼가 너무 작아 CLOB 데이터를 보유할 수 없습니다. (0) | 2015.12.31 |
ORA-14074 분할영역 유지 작업에 분할영역 범위가 너무 적습니다. (0) | 2015.04.09 |