Sql-Server

Fill Factor:在檢測到索引頁的變化後,填充因子會自動變化嗎?

  • February 7, 2016

因此,假設預設填充因子最初為 0。數據已載入到伺服器中,一個美好的周末,索引重建作業開始執行。現在,如果它檢測到任何必須映射到已滿索引頁面的新數據,它將將該頁面分成兩半並相應地定位記錄。所以,現在,基本上數據庫的填充因子不是 0,因為有兩個頁面是半滿的。這會在我們下次執行 sp_configure 時反映出來嗎?

所以,現在,基本上數據庫的填充因子不是 0,因為有兩個頁面是半滿的

你是對的,但這實際上是由填充因子值引起的。你不能說現在填充因子不是 100(假設你的情況)那將是一個不正確的陳述,因為填充因子是 100 這個頁面拆分事件是強制的。假設您的索引頁幾乎已滿,並且現在需要容納新行,這將導致頁面拆分並通過導致碎片將半行移動到那裡的新頁面。那麼是什麼原因造成的:正是 100 填充因子值。這就是為什麼您必須謹慎選擇填充因子值的原因

較低的非零填充因子值可能會隨著索引的增長而減少拆分頁面的要求,索引將需要更多的儲存空間並且會降低讀取性能

另請注意,無論您使用什麼填充因子值,即使您不斷增加列,您也無法避免頁面拆分。有兩種類型的頁面拆分好壞。不好的是當數據插入中間產生間隙時。

保羅關於填充因子的神話系列中關於全因子的一些資訊

閱讀有關填充因子的更多資訊

這會在我們下次執行 sp_configure 時反映出來嗎?那麼當我們重新啟動 SQL Server 並使用 sp_configure 或任何其他選項檢查填充因子的目前值時,它是否反映了目前計算的值?還是會保持相同的價值?

不,重新啟動後,即使數據庫有許多頁面拆分並且許多頁面被半填滿, fill factorin的值也不會改變。sp_configure這稱為碎片。

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