原标题:SQL性能调优:查找慢查询的5种方法
SQL性能调优:查找慢查询的5种方法
SQL Server的查询运行太慢了,以至于大家都不太喜欢。我们来看看如何快速跟踪它们,以便您可以处理这些查询!
SQL性能调优是一场永无止尽的斗争。我不是一名DBA,而是一名15年的开发人员。我从开始用SQL Server数据库工作,一直到用Stackify的大SQL Azure数据库。这么多年来,我看到了一切。
在本文中,我将提供一些技巧,以便开发人员可以在SQL Server中查找SQL慢查询并进行性能调优。
查找SQL慢查询的5种方法
1
使用SQL DMVs查找慢查询
SQL Server的一个重要特性是内置的动态管理视图(DMVs)。他们可以提供大量关于各种主题的信息。
有几个DMVs提供关于查询统计信息,执行计划,近期查询等数据。这些可以一起使用来提供一些惊人的见解。
例如,下面的查询可用于查找使用最多读取,写入,工作时间(CPU)等的查询。
查询的结果如下图所示。下面的图片是我制作的一款营销应用程序。您可以看到一个特定的查询(前一个查询)占用了所有的资源。
通过查找这个,我可以复制该SQL查询,看看是否有改进方法,添加索引等。
优点:始终可用的基本汇总统计。
缺点:没有告诉您什么是查询。当查询被调用时无法可视化。
2
通过APM解决方案查询报告
许多应用程序性能管理(APM)工具的一大特性就是能够跟踪SQL查询。例如,Retrace跟踪跨越多个数据库提供程序(包括SQL Server)的SQL查询。Retrace可以告诉您一个查询执行了多少次,平均需要多长时间,以及调用哪些事务。对于SQL性能调优,这是真正有价值的信息。
APM解决方案通过在运行时对应用程序代码进行轻量级性能分析来收集这些数据。
以下是Retrace的应用程序仪表板的屏幕截图,显示了特定的应用程序,其中SQL查询花费的时间最长。
Retrace高级SQL查询
Retrace收集正在执行的每个SQL查询的性能统计信息。您可以搜索特定的查询来寻找潜在的问题。
Retrace查看所有的SQL查询
通过选择一个查询,您可以看到该查询被调用的频率和时间。您还可以看到网页使用SQL查询以及它们的性能是如何受到影响的。
随着时间的推移Retrace SQL性能
由于Retrace是一个轻量级的代码分析器并获取了ASP.NET请求跟踪,它甚至可以向您展示您的代码正在做什么。
下面是一个获取的跟踪,显示了所有的SQL查询以及有关代码正在做什么的细节。Retrace甚至可以在同一视图中显示日志消息。另外请注意,它显示了正在执行查询的服务器地址和数据库名称。您还可以看到返回了多少记录。
Retrace Web事务跟踪
如您所见,Retrace提供了全面的SQL报告功能,作为其APM功能的一部分。它还在SQL查询中提供了多个监视和警报功能。
优点:每个应用程序和每个查询的详细报告。可以显示事务跟踪细节,详细说明如何使用查询。每月只需10美元。总是在安装后运行。
缺点:不提供每个查询的读写数量。
3
SQL Server Profiler(弃用!)
SQL Server Profiler已经存在很长一段时间了。如果您尝试实时查看针对数据库执行的SQL查询,那么这是非常有用的。
注意:Microsoft已经宣布SQL Server Profiler已被弃用!
SQL Profiler获取了与SQL Server交互的非常详细的事件:
登录连接,断开连接和故障。
SELECT,INSERT,UPDATE和DELETE语句。
RPC批处理状态调用。
存储过程的开始和结束。
存储过程中语句的开始和结束。
SQL批处理的开始和结束。
写入SQL Server错误日志的错误。
在数据库对象上获取或释放的锁。
打开光标。
权限检查。
SQL Server Profiler
优点:非常详细的数据。
缺点:你必须手动打开它。这迫使您重新创建您要捕获的场景。它最终会消失,取而代之的是扩展事件。
4
SQL Server扩展事件
SQL Profiler已被SQL Server扩展事件所取代。这肯定会激怒很多人,但我理解Microsoft为什么要这样做。
扩展事件通过事件跟踪(ETW)工作。这是所有Microsoft相关技术公开诊断数据的常用方法。
ETW提供了更多的灵活性。作为一名开发人员,我可以轻松从SQL Server中获取ETW事件,来收集用于自定义用途的数据。这真的很酷,而且真的很强大。
优点:更容易启用并运行。更容易开发定制解决方案。
缺点:相对较新,大多数人可能没有注意到它。
5
SQL Azure查询性能洞察
我将假设SQL Azure的性能报告是建立在扩展事件之上的。在Azure Portal中,您可以访问各种性能报告和优化技巧,这些信息非常有用。
注意:这些报告功能仅适用于在SQL Azure上的数据库。
在下面的屏幕截图中,您可以看到SQL Azure如何轻松地使用最多CPU,数据IO和Log IO的查询。
SQL Azure热门查询
您还可以选择单个查询并获取更多详细信息以帮助SQL性能调优。
SQL Azure查询详细信息
优点:基础报告很好
缺点:仅适用于Azure。没有跨越多个数据库的报告。
概要
下次您需要使用SQL Server进行性能调整时,您将有几个选项可以考虑。您将使用以上工具中的一个,具体取决于您要完成的任务。
如果您正在使用像Retrace这样的APM解决方案,请确保检查其内置的SQL性能功能。如果您没有APM解决方案或不确定它是什么,请务必阅读:什么是应用程序性能管理和开发人员在APM中需要的10个关键功能(https://stackify.com/what-is-apm/)。
每日推荐:
如您有任何疑问,
以及想要和优才小编沟通,
请联系:15201480058返回搜狐,查看更多
责任编辑: