行业动态

防御吧作为15年知名老牌域名服务商,CNNIC和CANN双认证域名注册商,已经
持续为500多万个域名提供服务,包括智能DNS/自由转移/隐私保护等服务!
服务器上的12个SQL Server性能调整技巧
2021-02-18 20:25:38 【

查询调优通常是提高SQL Server性能的最快方法。大多数情况下,系统级服务器性能(内存,处理器等)的改进措施无效且昂贵。专家开发人员认为,大多数性能问题都可以归因于查询质量不佳和索引编制效率低下,而不是硬件约束。实际上,某些性能问题只能通过查询调整来解决。

但是,当涉及到SQL Server性能查询调优时,DBA通常会从何处着手解决这个问题。您如何评估查询?您如何发现查询编写方式中的缺陷?您如何发现潜在的改进机会?查询调优是科学的一半,也是艺术的一半,因为没有正确或错误的答案,只是给定情况下最合适的解决方案。

这里有12个快速提示,可以帮助DBA以可衡量的方式提高查询性能,同时可以确定特定的更改实际上提高了查询速度。

1.基本查询分析

DBA需要对所有层具有可见性,并需要有关昂贵查询的信息,以便找出根本原因。有效的调优需要了解最重要的SQL语句,最重要的等待类型,SQL计划,阻塞的查询,资源争用以及缺少索引的影响。从基础开始-在潜入之前准确了解您要处理的内容会有所帮助。

技巧1:了解表和行数

首先,请确保您确实在对表进行操作,而不是对视图或表值函数进行操作。表值函数有其自身的性能影响。您可以使用SSMS将鼠标悬停在查询元素上以检查这些详细信息。通过查询DMV检查行数。

技巧2:检查查询过滤器,WHERE和JOIN子句,并注意过滤后的行数

如果没有过滤器,并且返回了大多数表,请考虑是否需要所有这些数据。如果根本没有过滤器,这可能是一个危险信号,需要进一步调查。这确实会降低查询速度。

技巧3:了解表的选择性

根据前两个技巧中的表和过滤器,您将了解要使用的行数或实际逻辑集的大小。我们建议将SQL图表用作评估查询和查询选择性的强大工具。

提示4:分析其他查询列

请仔细检查SELECT *或标量函数,以确定是否涉及其他列。您带回的列越多,执行计划使用某些索引操作的最佳列可能越少,这反过来又可能降低性能。

2.高级查询分析

技巧5:了解和使用约束

会有所帮助在开始进行调整时,了解和使用约束会有所帮助。查看现有的键,约束,索引,以确保避免重复工作或避免已经存在的索引重叠。要获取有关索引的信息,请运行sp_helpindex存储过程:

提示6:检查实际的执行计划(而不是估计的计划)。

估计的计划使用估计的统计信息来确定估计的行;实际计划在运行时使用实际统计信息。如果实际计划和估计计划不同,则可能需要进一步调查。

提示7:记录结果,重点放在逻辑I / O的数量上

如果不记录结果,则无法确定更改的真正影响。

提示8:根据您的发现调整查询并一次进行小的,单个更改,一次进行

太多更改可能是无效的,因为它们可以相互抵消!首先寻找最昂贵的操作。没有正确或错误的答案,只有针对给定情况的最佳选择。

技巧9:重新运行查询并记录所做更改的结果

如果您看到逻辑I / O有所改善,但是改善还不够,请返回技巧8,以检查可能需要调整的其他因素。一次进行一次更改,重新运行查询并比较结果,直到对您已解决所有可能的昂贵操作感到满意为止。

技巧10:如果仍然需要改进,请考虑调整索引以减少逻辑I / O

添加或调整索引并不总是最好的选择,但是如果您不能更改代码,则可能是唯一的选择你可以做。您可以考虑现有索引,覆盖索引和筛选索引以进行改进。

提示11:重新运行查询并记录结果

如果进行了调整,请重新运行查询并再次记录这些结果。

提示12:设计愚蠢的

Lookout,以查找经常遇到的性能抑制因素,例如:代码优先生成器,通配符滥用,标量函数,嵌套视图,游标和逐行处理。

3.使用数据库性能监视工具来简化查询调整。

传统的数据库监视工具着重于健康指标。当前的应用程序性能管理工具提供了提示,但并不能帮助找到根本原因。


】【打印关闭】 【返回顶部
分享到QQ空间
分享到: 
上一篇没有了 下一篇免备案服务器租用具体需要特别注..

立足首都,辐射全球,免备案服务器网专注云防御及云计算服务15年!

联系我们

服务热线:010-56157787 ,010-56159998
企业QQ:4000043998
技术支持:010-56159998
Copyright ? 2003-2016 gnmianbeian.com. 免备案服务器网版权所有 增值许可:京B2-20140042号
售前咨询
公司总机:4000043998 01056155355
24小时电话:010-56159998
投诉电话:18910191973
值班售后/技术支持
售后服务/财务
备案专员
紧急电话:18610088800