2014년 8월 23일 토요일

[구로/가산,오라클인덱스모니터링기능,ORACLE INDEX강좌교육]Oracle의 monitoring index 기능을 이용하면 사용되고 있지 않은 인덱스를 확인 할 수 있습니다.SQL/ORACLE/교육/학원

[구로/가산,오라클인덱스모니터링기능,ORACLE INDEX강좌교육]Oracle의 monitoring index 기능을 이용하면 사용되고 있지 않은 인덱스를 확인 할 수 있습니다.SQL/ORACLE/교육/학원
 
절차는 다음과 같습니다.
 
1.     index usage 통계 이용
2.     index usage 통계치는 쿼리에 대한 parsing이 일어날 때 확인
3.     turn on index monitor
4.     index monitor turn on/off 한다는 것은 이미 사용중인 cursor invalidate 상태로 만들어 다시 컴파일하는 과정이 필요하므로 가급적 데이터베이스에 대한 작업이 적을 때 하는 것이 바람직합니다.
 
[]
 
SQL> conn scott/tiger
연결되었습니다.
 
SQL> select table_name, index_name, monitoring, used,
  2             start_monitoring, end_monitoring
  3  from v$object_usage;
 
선택된 레코드가 없습니다.
 
SQL> create index idx_myemp_sal on myemp(sal);
 
인덱스가 생성되었습니다.
 
SQL> create index idx_myemp_ename on myemp(ename);
 
인덱스가 생성되었습니다.
 
SQL> alter index idx_myemp_sal monitoring usage;
 
인덱스가 변경되었습니다.
 
SQL> alter index idx_myemp_ename monitoring usage;
 
인덱스가 변경되었습니다.
 
SQL> select table_name, index_name, monitoring, used,
  2             start_monitoring, end_monitoring
  3  from v$object_usage;
 
TABLE_NAME                     INDEX_NAME                     MON USE
------------------------------ ------------------------------ --- ---
START_MONITORING    END_MONITORING
------------------- -------------------
MYEMP                          IDX_MYEMP_ENAME                YES NO
03/01/2005 23:17:14
 
MYEMP                          IDX_MYEMP_SAL                  YES NO
03/01/2005 23:17:00
 
SQL>set autotrace on; e 이 부분은 tuning 강좌를 참고하여 확인 바랍니다.
 
SQL> select sum(sal) from myemp
  2  where job = 'SALEMAN'
  3  and sal > 15000;
 
  SUM(SAL)
----------
 
 
 
Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE
   1    0   SORT (AGGREGATE)
   2    1     TABLE ACCESS (BY INDEX ROWID) OF 'MYEMP'
   3    2       INDEX (RANGE SCAN) OF 'IDX_MYEMP_SAL' (NON-UNIQUE)
 
 
 
 
Statistics
----------------------------------------------------------
        144  recursive calls
          3  db block gets
        383  consistent gets
        236  physical reads
        580  redo size
        381  bytes sent via SQL*Net to client
        503  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          4  sorts (memory)
          0  sorts (disk)
          1  rows processed
 
-- IDX_MYEMP_SAL인덱스는 사용되었으므로 USED YES로 바뀌어 있습니다.
 
SQL> select table_name, index_name, monitoring, used,
  2             start_monitoring, end_monitoring
  3  from v$object_usage;
 
TABLE_NAME                     INDEX_NAME                     MON USE
------------------------------ ------------------------------ --- ---
START_MONITORING    END_MONITORING
------------------- -------------------
MYEMP                          IDX_MYEMP_ENAME                YES NO
03/01/2005 23:17:14
 
MYEMP                          IDX_MYEMP_SAL                  YES YES
03/01/2005 23:17:00
 
SQL> alter index IDX_MYEMP_ENAME nomonitoring usage;
 
인덱스가 변경되었습니다.
 
SQL> alter index IDX_MYEMP_SAL nomonitoring usage;
 
인덱스가 변경되었습니다.
 
모니터링이 종료 되더라도 이전의 기록은 없어지지 않고 남아 있습니다.
 
SQL> select table_name, index_name, monitoring, used,
  2             start_monitoring, end_monitoring
  3  from v$object_usage;
 
TABLE_NAME                     INDEX_NAME                     MON USE
------------------------------ ------------------------------ --- ---
START_MONITORING    END_MONITORING
------------------- -------------------
MYEMP                          IDX_MYEMP_ENAME                NO  NO
03/01/2005 23:17:14 03/01/2005 23:21:09
 
MYEMP                          IDX_MYEMP_SAL                  NO  YES
03/01/2005 23:17:00 03/01/2005 23:21:20



댓글 없음:

댓글 쓰기