データベースを維持するためにOla Hallengrenのスクリプトを使用しています。それらのいくつかには、メンテナンスの恩恵を受けていないように見えるインデックスがあります。彼のスクリプトには低いしきい値(1000ページと思います)があり、それ以下では再構築または再編成を試みません。
1つのインデックスの場合、dm_db_index_physical_statsでは、クラスター化インデックスが2行で表示されます。 1つはPK_DATA、IN_ROW_DATAのアロケーションユニットタイプ、16ページ、93.75%が断片化されています。その他のPKデータ、アロケーションユニットタイプはLOB_DATA、57200ページ、0%が断片化されています。
このインデックスは再編成されると思いますか、それともアロケーションユニットタイプごとにページ数が異なるためにスキップされますか?それとも、再編成に失敗しているのでしょうか?
あなたが持つかもしれないアドバイスを事前に感謝します。
Ola Hallengrenのスクリプトでは、MAX
断片化を使用し、IN_ROW_DATA
アロケーションユニットタイプのみを考慮しています。彼のスクリプトからのこの抜粋を見てください:
ALTER PROCEDURE [dbo].[IndexOptimize]
-- ...
-- Is the index fragmented?
-- ...
-- Note his use of the following below:
---- @ParamFragmentationLevel = MAX(avg_fragmentation_in_percent)
---- WHERE alloc_unit_type_desc = ''IN_ROW_DATA''
SET @CurrentCommand05 = @CurrentCommand05 + 'SELECT @ParamFragmentationLevel = MAX(avg_fragmentation_in_percent), @ParamPageCount = SUM(page_count) FROM sys.dm_db_index_physical_stats(@ParamDatabaseID, @ParamObjectID, @ParamIndexID, @ParamPartitionNumber, ''LIMITED'') WHERE alloc_unit_type_desc = ''IN_ROW_DATA'' AND index_level = 0'
スクリプトの正確なロジックについてこれ以上踏み込まないと、ページ数が最小の1000を下回っているため、インデックスが再編成されないように見えます。