SQL Server表索引:调整填充因子

日期: 2011-01-20 作者:Serdar Yegulalp翻译:沈宏 来源:TechTarget中国 英文

SQL Server表索引有一种使自己稀疏的特性,表越大并且访问越频繁,就越需要一个合适的调整因子。   SQL Server表索引的填充因子选项是最常见的针对索引的一种调优方法。索引的填充因子是一个百分比,用于告诉SQL Server每个叶级索引页可以填充多少索引数据,多少空间应该保留作为成长空间。如果基础表的列被修改或列被添加或在表中添加数据时,那么就会发生扩展。

随着时间的推移索引碎片在增长,或者索引性能表现不佳,这是一个标志你可能需要调整最常用表的索引填充因子。问题是如何进行调整。   首先,你必须做的是避免发生这类状况,手动设置一个实例级的填充因子,也就是说填充因子将影响给定SQL S……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

SQL Server表索引有一种使自己稀疏的特性,表越大并且访问越频繁,就越需要一个合适的调整因子。

  SQL Server表索引的填充因子选项是最常见的针对索引的一种调优方法。索引的填充因子是一个百分比,用于告诉SQL Server每个叶级索引页可以填充多少索引数据,多少空间应该保留作为成长空间。如果基础表的列被修改或列被添加或在表中添加数据时,那么就会发生扩展。随着时间的推移索引碎片在增长,或者索引性能表现不佳,这是一个标志你可能需要调整最常用表的索引填充因子。问题是如何进行调整。

  首先,你必须做的是避免发生这类状况,手动设置一个实例级的填充因子,也就是说填充因子将影响给定SQL Server实例中的所有表。原因很简单:每张SQL Server表都有自己的操作特性,有其自身的需要。填充因子默认设置为100% 。默认情况下,它可以随时间调整就像调整数据库性能一样。

  第二件要记住的事情:有可能在很多实例中不需要调整填充因子。对只有几页的索引不必费心(使用DBCC SHOWCONTIG命令可知),反正这些索引都会被缓存起来。首先确认索引的最大页数和低扫描密度(使用DBCC SHOWCONTIG命令可知)。一个只有12页和50%密度的索引所产生的问题要远远小于一个有7000页和同样密度的索引。

  第三,要明确需要调整多大,应该向什么方向调整,因为没有一个神奇数字可以满足所有的需求。填充因子设置太高,就会浪费大量的空间以及被拆分成单页。填充因子设置太低,数据库大小的增加会导致大量的输入/输出操作从而影响性能。

  Randal建议开始的时候把70%作为默认值使用一个星期左右,然后根据变化的结果向上或向下调整这个值。在这方面SQL Server性能计数器Page Splits/sec就是一个很大的帮助;计数器值越高,越需要对SQL Server表索引进行调优。

  也有人建议,填充因子的设置取决于有问题表的读/写率,低更新(频繁读)的表使用高填充因子,反之亦然。因此,填充因子值不应低于60%-70%,除非你有一些极不寻常的使用方案,一般情况下都是写的数量级多于读。

  另一个建议是:如果只是将数据添加到表的末尾,那么填充因子不能设置为0或100%。根据我的经验,追加方式操作的表通常受益于90%的填充因子,如果没有大量的更新操作,只需要空出足够的索引成长空间即可。

  SQLTeam.com的Tara Kizer也谈到填充因子的更改如何会降低SELECT的性能,以及任何更改填充因子的动作必须要有定期的数据库性能审计。

作者

Serdar Yegulalp
Serdar Yegulalp

Serdar Yegulalp从1994年到2001年为Windows杂志写作,覆盖了广泛的技术方面。他现在是《The Windows 2000 Power Users Newsletter》一书的出版者,辛勤钻研他擅长的Windows NT, Windows 2000 and Windows XP领域,并为TechTarget写专栏。

翻译

沈宏
沈宏

相关推荐