データブロックの効率的な使用(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
      • 別の表領域に移動は不可能
      • 追加ディスク領域は不要
      • 索引の高さは変わらない
  • 索引の監視

 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ビュー上にある情報はリセットされ、新しい開始時刻情報が格納されます。