2013-09-23 58 views
0

我有一個困惑。如果我將填充因子設置爲50%,那麼sql引擎將留出一半空間用於未來增長,因此數據將存儲在高達4KB(約)的日期頁中,因爲頁面最大大小爲8KB。此外,填充因子僅適用於重建索引。請清除我對上述情況的疑問。任何幫助,將不勝感激。填充因子和索引

感謝

回答

1

DBA和開發人員經常讀,降低填充因子減少頁面拆分可以提高性能。也許他們試圖解決性能問題,或者他們可能感到偏執。他們要麼在某些索引上過多地減少填充因子,要麼對所有索引應用填充因子更改。

以下是獨家新聞:確實,100%的默認填充因子並不總是好的。如果我將頁面填充到邊緣,然後返回並需要在該頁面上插入一行,則不適合。爲了使數據適合並保留索引的邏輯結構,SQL Server將不得不做很多複雜的事情(「糟糕的」類型的頁面拆分),其中包括:

1)添加一個新頁面。

2)將大約一半的數據移動到新頁面。

3)標記在舊頁面上移動的數據,使其無效。

4)更新現有頁面上的頁面鏈接指針指向新頁面 而且,這是很多工作。

它生成日誌記錄並導致額外的IO。是的,如果您遇到過這種情況,您可能需要稍微減少該索引中的fillfactor,以減少發生次數。測設FILLFACTOR

最佳做法下面是關於如何安全地設置填充因子一些簡單的建議:

1)不要設置填充因子的系統範圍值。這很可能不會對你的表現造成傷害。

2)獲得一個好的索引維護解決方案,它檢查索引碎片並僅對相當分散的索引起作用。將解決方案記錄到表中。尋找經常分散的索引。考慮使用計劃更改逐漸降低這些單獨索引中的填充因子以重建索引。當你第一次降低填充因子時,考慮到95並重新評估一次或兩次維護後的索引。 (根據您的SQL Server版本和版本,重建可能需要離線完成,重新組織不能用於設置新的fillfactor。)

第二個選項可能聽起來很挑剔,但在大多數環境中它只是需要幾分鐘的時間來確定你需要改變的地方。你可以每月做一次。這是值得的 - 因爲沒有人希望他們的數據庫性能下降,並意識到他們已經造成額外的IO,因爲在內存中留下了許多千兆字節的空間。