Q & A

오라클 8과 8i의 plan의 차이점

Date2002.04.27 / Hit : 19078
질문내용 ======== <> 오라클 8i 버전 이후부터는 트레이스의 각 오퍼레이션에서 액세스한 row수가 아닌 각 오퍼레이션 결과 배출된 row수로 트레이스 결과가 집계되는데, 액세스한 row수로 집계되도록 하는 옵션이 있습니까? 이상의 테스트는 8.1.5 버전에서 실행되었음. 예로 아래의 SQL에 대해서 trace를 돌려 보면 오라클 버전에 따라 차이가 있음을 볼 수 있습니다. SQL> SELECT count(*) FROM unidba.test1 WHERE substr(cur_c,1,3) = 'USD' AND fcur_int_dtl_tc = '2005' 우선 8.1.x 이상 버전에서 Rows Execution Plan ------- --------------------------------------------------- 0 SELECT STATEMENT GOAL: CHOOSE 1 SORT (AGGREGATE) 3407 TABLE ACCESS (FULL) OF 'TEST1' 8.0.x 이하 버전에서는 Rows Execution Plan ------- --------------------------------------------------- SELECT STATEMENT GOAL: CHOOSE 0 SORT AGGREGATE 202219 TABLE ACCESS FULL TEST1 OF 'UNIDBA.TEST1' 동일한 TABLE ACCESS FULL 오퍼레이션에 대해서 Row수는 3407건과 202219건으로 차이가 납니다. 8.0.x 이하 버전에서는 해당 오퍼레이션이 처리를 위해 액세스한 모든 레코드 건수(202219건)가 나오는데 반해, 8.1.x 이상 버전에서는 해당 오퍼레이션이 처리를 마치고 나온 정제된 결과 집합의 레코드 건수(3407건)가 나옵니다. 저는 이러한 차이가 trace에 대한 어떤 옵션 설정에 의한 차이인지를 여쭤본 것입니다. 튜닝의 요체가 액세스량을 줄여 주는 것인데 8.1.x 이상 버전에서의 trace 결과로는 처리를 위해 동원되는 레코드의 범위를 가늠하기가 어려워져서 튜닝이 더 어려워지지 않았나 봅니다.
  • 대표전화
    1660-1675

  • 기술 문의
    02-6931-1734

  • 오렌지 문의
    070-8666-8175

  • 라이선스 문의
    02-6931-1728