インデックスREBUILDがインデックスの断片化を軽減しないのはなぜですか?


30

ALTER INDEX REBUILDを使用して、インデックスの断片化を削除しました。場合によっては、REBUILDはこのフラグメンテーションを削除しないようです。REBUILDがフラグメンテーションを削除しない理由は何ですか?これは特に小さなインデックスで発生するようです。


回答:


39

インデックスが非常に小さい場合(8ページ未満と思われます)、混合エクステントが使用されます。したがって、住宅のエクステントには複数のインデックスからのページが含まれるため、断片化がまだ残っているように見えます。

このため、また断片化が通常無視できるほど小さいインデックスでは、特定のページしきい値でのみインデックスを再構築する必要があります。最小1000ページの断片化されたインデックスを再構築することをお勧めします


34

これは、非常に大きなインデックスでも発生する可能性があります。

約7億行のテーブルにいくつかのインデックスがありましたが、約30%未満ではデフラグできませんでした。この問題は、インデックスを連続して配置するのに十分なデータベース内の連続した空き領域ではありませんでした。

最適化されない非常に大きなインデックスを回避するには、新しいデータベースのサイズを事前に設定し、すべてのオブジェクトをそのDBに移動してから、インデックスを再作成します。


1

私はこの問題にしばらく苦労してきましたが、JNK Iのように、問題はディスク上の空き領域と物理的な断片化が続くことでした。ただし、SSD SANでそれをどうしますか?

index_level = 0のみを含めることは良い考えかもしれないことがわかりました。これがオラ・ハレングレンのスクリプトで行われている方法です。

別の改善は行うことです

 REBUILD With (maxdop = 1)

これにより、最大限の改善が保証されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.