データブロックの効率的な使用(3) --- 索引のチューニング(索引走査)
- 索引の診断
- 変更が多く行われる表では、表のセグメントだけでなく、索引のセグメントも断片化を起こす
- 索引は完全に空となった索引ブロックのみ空きリストに登録され、再利用可能となる(表のように”PCTUSEDを下回ったら”ではない)
- 診断方法
- ANALYZE INDEX ... VALIDATE STRUCTUREコマンド
- INDEX_STATSビューのLF_ROWSとDEL_LF_ROWSを確認
- DEL_LF_ROWS/LF_ROWSが20%を超えていたら、索引の再構築を検討
- 索引の再構築/結合
- ALTER INDEX ... REBUILD
- 高速全索引走査を使用して既存索引を元に新しい索引を作成する
- 索引を削除してから再作成するよりも高速
- 別の表領域に移動可能
- 追加のディスク領域(再構築中は2倍くらいになる)が必要
- 索引の高さが低くなる可能性もある
- ALTER INDEX ... COALESCE
- 別の表領域に移動は不可能
- 追加ディスク領域は不要
- 索引の高さは変わらない
- ALTER INDEX ... REBUILD
- 索引の監視
1. 索引の使用状況の監視を開始
ALTER INDEX index_name MONITORING USAGE;
2. 索引の使用状況を検索
SELECT index_name, used FROM v$object_usage;
3. 索引の使用状況の監視を終了
ALTER INDEX index_name NOMONITORING USAGE;
V$OBJECT_USAGEビューのUSED列は、監視期間中に使用された(YES)か使用されていない(NO)を確認できます。YESとなったら、あとは、何度使用しても変化はありません。不要となった監視は終了します。
「ALTER INDEX 索引名 MONITORING USAGE;」文で索引を指定して監視の開始を行うたびに、指定した索引のV$OBJECT_USAGEビュー上にある情報はリセットされ、新しい開始時刻情報が格納されます。