技术开发 频道

SQL Server如何应对工作负载高峰

 
预备

  通常,所有的开发都会在电子商务网站迎接新的销售旺季之前几个星期结束,然后进入预备模式,不会再对产品机器进行任何的更改。自动的批处理管理也暂停了,只有在定位真正的攻击的时候才会使用批处理。在确定成为产品之前,这些紧急批处理的影响会在QA环境中进行评估。

清单“准备工作负载高峰”

  作为数据库管理员,你会采取什么行动来让SQL Server做好对负载高峰的准备?以下是一些可遵循的步骤。

  清单:让SQL Server为工作负载高峰做好准备

  维护

  如果你根本没有任何维护窗口:
  为尽可能多的不必要数据进行存档
  运行dbreindex来更新你的索引,并重新建立填充因子。
  在朝大型的数据库上,你也许不能这么奢侈。如果情况确实如此,那么采取以下步骤:

  关闭自动更新统计

  当表被修改的内容达到20%的极限时,SQL Server在默认情况下自动为表更新统计数据。要关闭自动更新/创建统计,输入以下命令:
  sp_dboption ,'auto create statistics', off
  sp_dboption ,'auto update statistics', off

  关闭自动压缩

  事务日志或者数据库文件的压缩都会引起性能的下降。请按照SQL Server MVP Tibor Karaszi 在《压缩数据库或者事务日志文件所产生的后果》中给出的建议。

  关闭自动增长

  关闭自动增长,限制数据库数据文件的最大尺寸。如果让你的数据库必须增加数据库文件或者事务日志文件的尺寸,那么势必会降低性能并使事务串行化。请参考微软相关文章获取更多有关自动增长所产生后果的信息。

  关闭索引碎片整理和索引优化

  索引碎片整理是一项在线操作(即,在不锁定表的情况下进行的操作),它可能引起相当可观的对表和索引的锁,它会降低你的SQL Server整体性能。具有碎片的索引的影响将会在虚拟数据库中最小化;只有当你执行索引扫描的时候才会对索引查找产生负面影响。请参考这篇白皮书来获得更多信息:索引维护操作.

  维护你的事务日志

  一个被忽视的事务日志将会拥有大量的虚拟日志文件(VLF)。你可以通过减少虚拟日志文件的数量来获得更好的性能。你可以通过经常的清空事务日志来达到这个目标(例如,每五分钟)。

  采用快速数据库备份解决方案

  通过使用第三方的SQL备份产品,减少你的备份对数据库性能的影响。

  重新编译存储过程

  重新编译你的存储过程,以确保选择了优化的执行计划。

  运行预热脚本

  在你的数据库上运行预热脚本,确保你的查询可以从缓冲中获得最大收益。

  警惕性能监控

  你可以通过使用标准模板运行SQL Server Profiler,以此最小化对系统性能的影响。其他供应商提供的各种工具,例如, Imdeca Software Inc. 和 Idera,都可以为你的SQL Server提供窗口来评估你系统的健康程度和性能。许多这样的工具都具有针对你的SQL Server的记忆和处理器印记。Performance Monitor也同样具有,并且它还可以为你的数据库提供一个可替换的窗口。

  定时批处理任务

  为你的批处理任务或者DTS包定时,让它们在低负载的时间运行,或者把它们推迟,直到假期的高峰时期过后。

  总结

  这里是我们对于你可以提前采用的提高SQL Server解决方案在负载高峰时期的性能的全部预备措施。除了仔细地计划和测试之外,别无他法。我们回顾了一系列的有关可能会导致产品系统在高负载情况下的性能下降的设置的贴士。判断一下哪些贴士可能会为你所用,最有代表性的环境中对它进行测试。
0
相关文章