통계정보를 가지는 뷰#

취득한 통계 정보는 SYS 유저가 소유하는 데이터·딕쇼내리에 격납되어 아래와 같이 딕쇼내리·뷰(ALL_또는, DBA_, USER_로 시작되는 뷰, 이하에서는 USER_로 시작되는 뷰 일람)로 통계 정보를 확인할 수 있다.
  • USER_TABLES
  • USER_INDEXES
  • USER_TAB_COLUMNS
  • USER_TAB_PARTITIONS
  • USER_IND_PARTITIONS
  • DBA_TABLES
  • DBA_INDEXES
  • DBA_TAB_COL_STATISTICS
  • DBA_HISTOGRAMS

SQL> select table_name, num_rows, blocks, avg_row_len, sample_size, last_analyzed
  2  from dba_tables where table_name = 'EMPLOYEE';

TABLE_NAME NUM_ROWS BLOCKS AVG_ROW_LEN SAMPLE_SIZE LAST_ANALYZED
---------- ------- ------ ----------- ----------- ---------------
EMPLOYEE        32       1          42          32 2004-08-06 20:15

통계정보 취득방법#

통계 정보의 취득은 DBMS_STATS 패키지 혹은 ANALYZE 명령어에 의해서 취득할 수 있습니다. DBMS_STATS 패키지에는 퍼포먼스 개선의 기능이 추가되고 있습니다. 예를 들면, 통계 정보의 취득시간 단축을 위한 병렬 처리에 의한 실행, 1%이하의 랜덤인 데이터 샘플링에 의한 취득, 통계 정보가 낡은 오브젝트만 재취득 등입니다.

또한 Oracle9i에서는 DBMS_STATS 패키지에서 시스템의 통계 정보(시스템의 I/O 및 CPU 성능등)를 취득하는 일도 가능하므로 보다 최적인 실행 계획을 선택할 수 있게 되어 있습니다.

analyze table emp compute statistics
테이블 자체가 클 경우 통계정보를 생성하는 것 자체가 많은 부하를 야기할수 있기 때문에 추가적으로 for table, for all indexes, for all indexed columns 를 붙일수 있다.

힌트사용#

  1. ALL_ROWS - 최고의 throughput가 되도록 최적화된다(풀 테이블 스캔, sort merge join이 선택되기 쉬워진다)
  2. FIRST_ROWS(n) - 응답 시간을 최단으로 하도록 최적화된다(인덱스 스캔과 nested loop join이 선택되기 쉬워진다)
  3. RULE - 규칙 기반 최적화를 선택한다
  1. FULL - 풀테이블 스캔을 선택한다
  2. INDEX - 인덱스 스캔을 선택한다
  3. HASH - 해시 스캔을 선택한다
  1. ORDERED - FROM구로 지정된 순서로 테이블을 결합한다
  2. LEADING - 결합 순서의 처음의 테이블을 지정한다
  3. STAR - 가능한 경우, 스타 문의를 선택한다
  1. USE_NL - nested loop join을 선택한다
  2. USE_MERGE - sort merge join을 선택한다
  3. USE_HASH - hash join을 선택한다
  1. APPEND - 다이렉트·패스 INSERT를 선택한다
  2. CACHE - 테이블의 로우를 메모리에 상주
  3. NOCACHE - 메모리에 상주시킨 옵션의 해제
  4. PARALLEL - 병렬처리 프로세서의 수를 지정

힌트 사용 예

select /*+ INDEX(dept deptno) USE_NL(emp dept) */
  empno, 
  ename, 
  job, 
  dname, 
  loc
from emp, dept 
where emp.deptno = dept.deptno;

Add new attachment

Only authorized users are allowed to upload new attachments.
« This page (revision-7) was last changed on 08-Jan-2008 18:38 by DongGukLee