Sql-Server

如何計算與數據庫大小相關的填充因子百分比?

  • October 29, 2019

我使用維護計劃重建了數據庫中的所有索引,設置填充因子為 95(5% 可用空間)。重新索引後,數據庫的大小幾乎翻了一番——報告的可用空間為 42%。

計算的填充因子如何與數據庫的大小相關?

重新索引可能有問題;是什麼導致瞭如此大的規模增長?

重新索引後的一些數據庫資訊:

Size (MB):            164 983.625
Data Space Used (KB):      82 907 896
Index Space Used (KB):     14 073 320
Space Available (KB):      71 879 024

為一張表的維護計劃生成 T-SQL:

ALTER INDEX [Table1_Index1] ON [dbo].[Table1] REBUILD PARTITION = ALL 
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF,
  IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON,
  ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 95)

附加資訊:

的結果sp_spaceused 'dbo.BigTable'

name        rows        reserved    data        index_size  unused
BigTable    58028080    72824296 KB 68393936 KB 4424000 KB  6360 KB

你看到的是正確的。

當你第rebuild一次建造indexindex的時,只有這樣舊index的才會被丟棄。如果你不使用

SORT_IN_TEMPDB = ON

伺服器需要創建的空間sort在您的內部分配db

db現在有空的空間,它不是reserved任何空間object,它只是空閒空間(在需要做的臨時對像sort被刪除後釋放的空間)

所以你的索引在 42% 上不是空的,你的索引在 42%db上是空的,如果你做了一個shrinkdata file我不推薦它)你的數據庫將只佔用82Gb

引用自:https://dba.stackexchange.com/questions/252123