非常に断片化されたいくつかのインデックスを再構築しました。インデックスの再構築後、使用されているデータベーススペースがほぼ50%減少しました(77GBから33GBに)
それは正常な動作ですか?自動縮小をオンにしていません-データを失いましたか?
注:使用スペース減少inデータベースファイル;データベースファイルの実際の物理サイズは変更されていません。
使用されるスペースの計算に使用されるコマンド:
SELECT sum(CAST(FILEPROPERTY(name, ''SpaceUsed'') AS INT))/128.0 as Space_Used_MB
select @@version
の結果
Microsoft SQL Server 2014(SP2-CU11)(KB4077063)-12.0.5579.0(X64)
OlaHallengrenのスクリプトを使用して実行されたインデックスの再構築。使用されるパラメーター:
Databases = 'USER_DATABASES',
FragmentationMedium='INDEX_REORGANIZE,INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE
',
FragmentationHigh = 'INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE',
FragmentationLevel1 = 5, FragmentationLevel2 = 30, FillFactor=80,
UpdateStatistics = 'ALL', OnlyModifiedStatistics = 'Y', LogToTable = 'Y'" -b
インデックスのメンテナンス/再構築でデータが失われることはありません。データが断片化されると、データが時間の経過とともに削除/更新され、元のページ位置に空きスペースが残るため、データはクラスター化/非クラスター化インデックスの複数のリーフページに分散されます。インデックスを再編成/再構築すると、ページ内のデータを並べ替え、将来使用するためにスペースをデータベースに解放することで、スペースが回復します。
これは非常に一般的な動作です。リーフレベルでページを並べ替えることにより、未使用のスペースを再利用しています。
重要でない限り、データファイルを縮小しないでください。将来、そのスペースが必要になる可能性があります。あなたはただ時間を無駄にし、データベースを(再び)断片化し、テーブルをロックしています。