[SQL Server] DBシステムの動作がモッサリするときはインデックスの断片化が原因かもしれない
製造現場からの問い合わせ。 「システムが重たいんだけど」 よくあるやつです。 現在稼働しているシステムは設計が悪く、使っているとどんどんデータが溜まってどんどん動作が重くなる。 なので定期的にデータを別テーブルに退避したり、データベースを圧縮したりしていた。 今回もそんなことかと調べてみると何やら様子が違う。 テーブルの容量やデータベースの大きさからすると重くなるにはまだ早い。むむむ? ▲ディスク使用量とかのレポートを見て回る(この画像はイメージです) いろいろと調べたところ、「インデックスの物理統計」というレポートで、推奨されている操作「再構築」というのが目にとまった。 その中には断片化95%とか恐ろしい数値が。 ▲インデックスが断片化してる。これを再構築せよということか。 (この画像はイメージです) ここでインデックスの断片化と再構築について調べる。 すごく簡単に言うと、Windowsのデフラグのようなことらしい。 インデックスの再構築の際には、データベースへのアクセスを停止しておかないといけないみたいなので注意。 ▲インデックスを再構築します。 ▲スッキリ、断片化0% 普段から酷使されてるテーブルはデータの件数が多い上に断片化がひどい。 そんなテーブルにこそ効果てき面のようで、インデックスの使用量がぐっと減ってスッキリする。 一通り再構築をして現場に聞いてみたら、「めっちゃ動きが軽くてストレスなくサクサクです♪」とのことでした。 よかったよかった。 ※本来はデータが溜まりにくかったり、動作が重くなりにくい設計にするべきだと思います。 また、メンテナンスプランを構築するなどして定期的な自動メンテナンスをした方がいいでしょう。 が、諸事情あってそれもなかなかできなんだよなぁ。