質問: oracle インデックスについて オラクルを勉強中の身です。 以下の件で、困っております。ご教授ください。 インデックスの容量が膨れ上がってしまい、現時点で2gb以上あるインデックスが、50個近くあり、今後も拡大が懸念され困っております。 (最大で30gbのが数個あります。) 上司に進言したいと考えておりますが、容量が膨れ上がると、どのような影響があるのか、対策をご教示ください。 (参考サイトがあれば教えてください。) 尚、テーブルについても、2gb以上の数量も同じぐらいあります。 現在、特に目立ったパフォーマンスの劣化がありません。(実際劣化はあるのでしょうが、認識していないのが現状です。) ちなみに、enterpriseへのバージョンアップは考えておりません。 使用しているオラクル環境は以下になります。 oracle database 10g release 10.2 standard edition 以上、宜しくお願い致します。
回答: 1. deleteが発生するテーブルの場合、インデックスに空きスロットができて無駄に膨れ上がっている可能性もあります。 deleteや、index列のupdateがあるテーブルのindexはanalyzeして無駄領域を検査してみてください。 indexのrebuildで無駄領域が解消され、アクセスも早くなる場合があります。 2. 一定期間indexのmonitoringをかけて、使われてなさそうなものがあれば削除しましょう。 3. インデックスがうまく使われているおかげで、データ量が増えても性能にあまり影響がないのかも知れません。テーブルフルアクセスと違い、データ量が増えても少ない検索範囲でデータ参照するためのものですからね。 しかし、あまりデータ量が増えすぎてキャッシュ効率が落ちだすと性能に影響が出始めるかも知れません。 システム寿命の年数の運用に耐えるだけのメモリとディスクを確保していないのであれば、 業務上、もう必要ないデータを別の場所に移す・削除するようなデータアーカイブ・クリーニング運用を行って、データが際限なく増えないようにしないといけないでしょうね。