2009-07-11 47 views
3

我新的SQL Server 2008的填充因子,這裏在SQL Server 2008 BOL提到,填充率2008

http://msdn.microsoft.com/en-us/library/ms177459.aspx

我2個混亂,

  1. 是否填寫因素適用於索引頁面?或適用於索引和數據頁面?在開始時,似乎填充因子只適用於索引頁 - 「提供填充因子選項用於微調索引數據存儲和性能」,但最後提到 - 「如果現有行將更新爲數據可以延長行的大小,使用小於100的填充因子。每個頁面上的額外字節將有助於最小化行中額外長度引起的頁面拆分。「任何意見?

  2. 填充因子是否只生成重建索引/創建索引操作(只有重建/創建索引將利用由填充因子保留的空閒空間),或者適用於任何插入/更新操作(任何插入/更新操作都將利用可用空間由填充因子保留)?

由於事先 喬治

回答

8

FILLFACTOR僅適用於索引頁。但是這裏的問題是,如果你有一個聚集索引(和大多數表),你的FILLFACTOR基本上也適用於你的數據,因爲你的數據存在於聚集索引的葉節點內。基本上,如果你有一個真正的只讀表,FILLFACTOR設置爲100的所有索引。對於任何給定的索引結構,這將爲您提供最小和最快的表格。請注意,如果您將FILLFACTOR設置爲100,以便修改將要修改的數據的索引,則您可以自行設置頁面拆分和可能降低的性能。

FILLFACTOR設置過高可能會影響插入/更新操作的性能。修改足夠的數據時,您將得到頁面拆分。這是B-tree index structure的內在性質的一部分 - 它會自動平衡樹。如果要將FILLFACTOR調整爲明確的設置,則BOL表示只有在重建索引時纔會生效。

+0

感謝Dave,1「這隻有在重建索引時纔會生效。」 - 你的意思是新的填充因子設置(假設我明確改變填充因子的值)只在我們重建索引時才生效? 2.更新操作將利用加載因子,因爲更新列的B-Tree中的索引值可能會發生變化,並且可能會從一個索引頁面移動到另一個索引頁面(因此如果目標索引頁面保留空間,則不會執行頁面分裂)? – George2 2009-07-11 13:33:41

0

填充因子給出關於..在默認8kb的SQL頁面中可用的多少空間。例如.. 假設FF = 20%,意味着100-20 = 80%的空間被填充。默認值的填充因子爲100,100-100 = 0%填充空間