查询调优通常是加速SQL服务器性能的最快方法。大多数情况下,系统级服务器性能(内存、处理器等)改进措施既无效又昂贵。专家开发人员认为,大多数性能问题都可以追溯到编写不当的查询和低效的索引,而不是硬件限制。事实上,有些性能问题只能通过查询调优来解决。
但是当涉及到SQL服务器性能查询调优时,DBA经常会遇到从哪里开始的问题。您如何评估查询?您如何发现查询编写方式中的缺陷?您如何发现隐藏的改进机会?查询优化一半是科学,一半是艺术,因为没有正确或错误的答案,只有最适合给定情况的解决方案。
这里有12个快速提示,可以帮助DBA以可衡量的方式提高查询性能,同时确保特定更改确实提高了查询速度。
1.基本查询分析
DBA需要了解所有层和有关昂贵查询的信息,以便隔离根本原因。有效的调优需要了解排名靠前的SQL语句、排名靠前的等待类型、SQL计划、阻塞的查询、资源争用以及缺少索引的影响。从基础开始——在你投入之前准确地了解你正在处理的是什么会有所帮助。
提示1:了解您的表和行数
确保您实际操作的是表,而不是视图或表值函数。表值函数有其自身的性能影响。您可以使用SSMS将鼠标悬停在查询元素上以检查这些详细信息。通过查询DMV检查行数。
技巧2:检查查询过滤器、WHERE和JOIN子句并注意过滤的行数
如果没有过滤器,并且返回了大部分表,请考虑是否需要所有数据。如果根本没有过滤器,这可能是一个危险信号,需要进一步调查。这确实会减慢查询速度。
技巧3:了解表格的选择性
根据前两个技巧中的表格和过滤器,了解您将使用多少行,或实际逻辑集的大小。我们建议使用SQL图表作为评估查询和查询选择性的强大工具。
技巧4:分析额外的查询列
仔细检查SELECT*或标量函数以确定是否涉及额外的列。您带回的列越多,使用某些索引操作的执行计划可能变得越不理想,而这反过来又会降低性能。
提示5:了解和使用约束会有所帮助
了解和使用约束会在您开始调优时有所帮助。查看现有的键、约束、索引,以确保避免重复工作或与已存在的索引重叠。要获取有关索引的信息,请运行sp_helpindex存储过程:
技巧6:检查实际执行计划(而非估计计划)
估计计划使用估计统计信息来确定估计行;实际计划在运行时使用实际统计信息。如果实际计划和估计计划不同,您可能需要进一步调查。
技巧7:记录您的结果,重点关注逻辑I/O的数量
如果您不记录结果,您将无法确定更改的真正影响。
提示8:根据您的发现调整查询并一次进行小的、单一的更改一次

技巧9:重新运行查询并记录所做更改的结果
如果您发现逻辑I/O有所改进,但改进还不够,请返回技巧8检查可能需要调整的其他因素。继续一次进行一项更改,重新运行查询并比较结果,直到您对已解决所有可能的昂贵操作感到满意为止。
技巧10:如果您还需要更多改进,请考虑调整索引以减少逻辑I/O
添加或调整索引并不总是最好的做法,但如果您不能更改代码,这可能是唯一的选择你可以做。您可以考虑对现有索引、覆盖索引和过滤索引进行改进。
技巧11:重新运行查询并记录结果
如果您进行了调整,请重新运行查询并再次记录这些结果。
提示12:设计出愚蠢的
Lookout以防止经常遇到的性能抑制因素,例如:代码优先生成器、滥用通配符、标量函数、嵌套视图、游标和逐行处理。
3.使用数据库性能监控工具来促进查询调优。
传统的数据库监控工具专注于健康指标。当前的应用程序性能管理工具提供提示,但不能帮助找到根本原因。
提示:通过使用连续的数据库性能监控解决方案,您可以大大简化查询调优。数据库性能监控工具的推荐包括:
SolarWinds?数据库性能分析器(DPA)
SolarWindsDatabasePerformanceAnalyzer(DPA)可以将性能信息整合到一个地方。使用DPA,您可以:
SolarWinds?SQLSentry
SQLSentry是另一种SQL服务器性能调整工具,可以帮助您解决性能问题。使用SQLSentry,您可以查看历史性能并检测问题以更快地开始故障排除。
本文来源:国外服务器--SQL服务器性能调优技巧(sql服务器性能调优技巧分析)
本文地址:https://www.idcbaba.com/guowai/2953.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1919100645@qq.com 举报,一经查实,本站将立刻删除。



