SQL Server表索引有一种使自己稀疏的特性,表越大并且访问越频繁,就越需要一个合适的调整因子。 SQL Server表索引的填充因子选项是最常见的针对索引的一种调优方法。索引的填充因子是一个百分比,用于告诉SQL Server每个叶级索引页可以填充多少索引数据,多少空间应该保留作为成长空间。如果基础表的列被修改或列被添加或在表中添加数据时,那么就会发生扩展。
随着时间的推移索引碎片在增长,或者索引性能表现不佳,这是一个标志你可能需要调整最常用表的索引填充因子。问题是如何进行调整。 首先,你必须做的是避免发生这类状况,手动设置一个实例级的填充因子,也就是说填充因子将影响给定SQL S……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属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从1994年到2001年为Windows杂志写作,覆盖了广泛的技术方面。他现在是《The Windows 2000 Power Users Newsletter》一书的出版者,辛勤钻研他擅长的Windows NT, Windows 2000 and Windows XP领域,并为TechTarget写专栏。
翻译
相关推荐
-
云端SQL Server高可用性最佳做法
与内部部署相比,在云端运行SQL Server可为数据库软件用户提供更多的灵活性和可扩展性,也可能更省钱。但云 […]
-
绘制数据关系图的利器:SQL Server 图像数据库工具
SQL Server 2017新增了图形数据库功能,你可以使用图结构来表示不同数据元素之间的关系。
-
如何在Azure部署时选择合适的SQL Server?
想要在Azure上运行SQL Server,企业一般会面临两种选择:在Azure虚拟机上安装SQL Server或使用Azure SQL Database。
-
Linux支持的引入 推动了SQL Server 2016集成服务的发展
随着SQL Server的不断发展,集成服务也在发生相应的变化。在最新的SSIS更新中,增加Linux支持和SQL Server 2016升级向导。