Q :
PLAN_HASH_VALUE 값을 비교하면 실행 계획이 동일한지 아닌지 알 수 있다고 합니다. 이 값을 버전 업그레이드시에 실행 계획을 비교하는데 사용해도 무방할만큼 믿을만한가요?
믿을 만하지 않다면 어떤 점을 조심해야하는지요?
A :
1. PLAN_HASH_VALUE 값을 계산하는 방식은 Oracle 9i, 10g, 11g에서 동일합니다. 따라서 버전과 무관하게 사용할 수 있습니다.
2. 단, PLAN_HASH_VALUE 값을 계산할 때 실행 계획에서 사용되는 모든 값을 참조하는 것이 아니라 다음과 같은 일부값을 사용합니다.
1) 실행 계획 상의 오퍼레이션 유형(TABLE ACCESS FULL, INDEX RANGE SCAN 등)
2) 실행 계획 상의 오브젝트 이름(T1, T2 등)
3) 병렬 실행에서의 Distribution 방식과 순서
문제는 위의 정보가 일치한다고 하더라도 실제 실행 계획은 다를 수 있다는 것입니다. 가령 특정 조건(Predicate)이 ACCESS로 사용되느냐, FILTER라 사용되는냐에 따라 실제로는 다른 실행 계획으로 볼 수 있습니다. 하지만 이 정보는 PLAN_HASH_VALUE를 계산할 때는 참조되지 않습니다.
위의 정보를 조합해보면 PLAN_HASH_VALUE 값으로 실행 계획의 동일성 여부를 판단하는 것은 99%의 경우에는 신뢰할 수 있지만, 특수한 일부 경우에서는 신뢰할 수 없는 경우도 있다고 결론내릴 수 있습니다.
만일 필요하다면 위에서 열거한 정보 외에 다른 정보를 포함한 독자적인 Hash Value를 계산해서 실행 계획의 동일성 여부를 확인할 수도 있습니다.
출처 : http://121.254.172.39:8080/pls/apex/f?p=101:11:0::::P11_QUESTION_ID:12242200346708503
'Oracle > 기타' 카테고리의 다른 글
조동욱 님의 새로운 책 "오라클 성능 트러블 슈팅의 기초" (0) | 2011.05.31 |
---|---|
LoadRunner software (0) | 2011.02.02 |
단말기폭 초과 발생시 (0) | 2010.11.13 |
SQL*PLUS에서 spool 시에 파일명에 날짜 추가하기 (0) | 2010.10.13 |
SQL*PLUS에서 명령 편집 (0) | 2010.07.08 |