■ 인덱스 분석
- 테이블에 대량으로 DML이 일어났을 때 분석함
SQL> analyze index [인덱스명] validate structure;
SQL> select (del_lf_rows_len / lf_rows_len) * 100 as balancing
from index_stats;
위 쿼리에서 인덱스 밸런싱 값이 0에 가까울 수록 양호한 상태이다.SQL> select (del_lf_rows_len / lf_rows_len) * 100 as balancing
from index_stats;
■ 인덱스 재구성
- 일반적으로 인덱스 밸런싱이 20% 초과시 성능저하가 발생한 것으로 간주되기에 인덱스 재구성을 실시.
- 리빌드 작업도 시간이 굉장히 오래 걸리고 과부하가 걸리는 것이라, 업무 이외 시간에 해줌.
SQL> alter index 인덱스명 rebuild [online];
SQL> analyze index 인덱스명 validate structure;
SQL> select (del_lf_rows_len / lf_rows_len) * 100 as bal
from index_stats;
리빌드 후 인덱스 밸런싱 값을 조회해보면 양호한 상태로 되었음을 확인.SQL> analyze index 인덱스명 validate structure;
SQL> select (del_lf_rows_len / lf_rows_len) * 100 as bal
from index_stats;
ONLINE : 리빌드 하는 동안에 인덱스를 사용하는 쿼리가 들어오면 해당 인덱스 사용 가능. 그러나 리빌드 하는 속도는 느림.
■ 인덱스 모니터링
- 해당 인덱스가 실제로 시스템에서 사용되어지는 것인지 확인 시 사용.
- 주의해야 할 것은 조회 시 used에 no로 나왔다 하더라도 해당 쿼리가 한달에 한번 도는 쿼리였다면 한달 후에 조회를 해야 하는 것이므로, 모든 것을 종합해 본 후 안쓰는 인덱스들의 삭제 조치를 고려해 보아야 한다.
SQL> alter index 인덱스명 monitoring usage; // 모니터링 시작
SQL> select index_name, used
from v$object_usage; // used에 no라고 나오면 사용 안된 것임.
SQL> alter index 인덱스명 nomonitoring usage; // 모니터링 해제
SQL> select index_name, used
from v$object_usage; // used에 no라고 나오면 사용 안된 것임.
SQL> alter index 인덱스명 nomonitoring usage; // 모니터링 해제
'오라클 > 튜닝' 카테고리의 다른 글
[튜닝] HWM(High Water Mark)를 실제 데이터가 들어있는 위치로 내리는 조치 방법 (0) | 2010.10.09 |
---|---|
[튜닝] Index suppressing 현상 (0) | 2010.10.09 |
[튜닝] 인덱스의 종류 (0) | 2010.10.09 |
[튜닝] 인덱스의 데이터블록 액세스 방식 (0) | 2010.10.09 |
[튜닝] 튜닝 관점에서의 인덱스 개념 (0) | 2010.10.09 |