SQL Server 2008的填充因子

时间:2009-07-11 13:18:54

标签: sql sql-server sql-server-2008 indexing

我是SQL Server 2008填充因子的新手,如SQL Server 2008 BOL中所述,

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

我的2个混乱,

  1. 填充因子是否适用于索引页面?或者适用于索引和数据页面?一开始,似乎填充因子仅适用于索引页 - “填充因子选项用于微调索引数据存储和性能”,但最后提到 - “如果现有行将更新为延长行大小的数据,使用小于100的填充因子。每个页面上的额外字节将有助于最大限度地减少由行中额外长度引起的页面拆分。“有什么意见吗?

  2. 填充因子是否仅生成重建索引/创建索引操作(仅重建/创建索引将使用填充因子保留的可用空间),或适用于任何插入/更新操作(任何插入/更新操作将利用填充因子保留的自由空间)?

  3. 提前谢谢, 乔治

2 个答案:

答案 0 :(得分:8)

FILLFACTOR仅适用于索引页面。但是这里的问题是,如果你有一个聚簇索引(并且大多数表都有),你的FILLFACTOR也将基本上应用于你的数据,因为你的数据存在于聚簇索引的叶节点内。基本上,如果您有一个真正的只读表,请将FILLFACTOR的所有索引设置为100。这将为您提供任何给定索引结构可能的最小和最快的表。请注意,如果将FILLFACTOR设置为100以获取将要修改的数据的索引,那么您可能需要进行页面拆分以及可能性能下降。

设置得太高的FILLFACTOR会影响插入/更新操作的性能。修改足够的数据时,您将获得页面拆分。这是B-tree index structure的内在本质的一部分 - 它自动平衡树。如果要将FILLFACTOR调整为显式设置,BOL表示只有在重建索引时才会生效。

答案 1 :(得分:0)

填充因子提供有关SQL页面中可用空间的信息,默认为8kb。例如.. 假设FF = 20%表示100-20 = 80%的空间被填充。填充因子的默认值为100,100-100 = 0%空间填充