사용되지 않는 인덱스 찾기
Oracle 9i의 특징인 monitoring index 기능을 이용하면 사용되고 있지 않은 인덱스를 확인 할 수 있습니다.
절차는 다음과 같습니다.
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; 이 부분은 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
Oracle 9i의 특징인 monitoring index 기능을 이용하면 사용되고 있지 않은 인덱스를 확인 할 수 있습니다.
절차는 다음과 같습니다.
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; 이 부분은 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
[100%환급,실무전문]SQL/빅데이터/자바/스프링/웹퍼블리싱/안드… | 12-27 | 2893 | ||
[채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육… | 12-11 | 2105 | ||
53 | [평일100%환급7건]웹퍼블리싱,자바&JSP,안드로이드,C#닷넷,SQL기… | 03-15 | 1974 | |
52 | [주말]C#,ASP.NET마스터 | 01-31 | 2106 | |
51 | [기업100%환급,평일주간]SQL기초에서스키마오브젝트,PLSQL,힌트… | 01-31 | 3067 | |
50 | [주말주간]자바&웹,jQUERY,스프링프레임워크,마이바티스 | 01-31 | 1623 | |
49 | [평일주간/야간,주말주간/야간]Spring,MyBatis,Hibernate개발자… | 01-19 | 1947 | |
48 | [평일주간/야간,주말주간/야간]안드로이드개발자과정(Adnroid 교… | 01-11 | 1814 | |
47 | [평일야간,주말주간야간]JAVA,Network&JSP&Spring,MyBatis,Hiber… | 01-03 | 2431 | |
46 | [100%환급,실무전문]SQL/빅데이터/자바/스프링/웹퍼블리싱/안드… | 12-27 | 2893 | |
45 | [주말야간]개발자를위한PLSQL,SQL튜닝,힌트(토/일) | 12-19 | 2026 | |
44 | [평일주간/야간,주말주간/야간]웹퍼블리싱 마스터(HTML5,CSS3,jQ… | 12-14 | 1996 | |
43 | [채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육… | 12-11 | 2105 | |
42 | [주말야간]JAVA,JSP,Spring,PLSQL,힌트,웹퍼블리싱,안드로이드,… | 12-09 | 1637 | |
41 | [평일야간,주말야간]닷넷(C#,Network,ADO.NET,ASP.NET)마스터 | 12-01 | 1862 | |
40 | [기업100%환급]오라클&자바웹스프링신입과정3주(SQL,JAVA,JSP,Se… | 12-01 | 2110 | |
39 | [평일야간,주말]SQL기초에서실무까지(SQL기초,PLSQL,힌트,튜닝) | 12-01 | 1509 |
댓글 없음:
댓글 쓰기