SQL事件探查器会影响服务器性能吗?


11

我遇到了一个问题,其中sql server 2008因某些高负载而失败。我需要找到这种负载情况,并需要优化代码以使其能够处理负载。我在互联网上发现,SQL事件探查器可用于跟踪数据库交互,然后可以对其进行分析以找到问题发生的确切点。我还发现了如何启动sql profiler。但是现在我的问题是,通过启动sql profiler,我是否会影响服务器性能?


5
是。这取决于您如何以及在何处运行它。如果采用正确的方法,则可以将额外的负载减少到百分之几。
米奇·

3
扩展事件可以是更轻量级的选项。
马丁·史密斯

Answers:


10

SQL Server Profiler是一个GUI,它通过客户端利用SQL Server跟踪。由于这种性质,是的,根据环境的不同,您可能会看到轻微到严重的性能影响。

SQL Server Profiler主要适合快速了解服务器上发生的情况(前提是数据库服务器可以处理额外的延迟)。它不打算长时间运行。对于更长的跟踪,请使用服务器端跟踪或扩展事件。


根据许多因素,即使是很短的探查器跟踪也可以+1,这可能会使服务器瘫痪。
阿龙贝特朗

3

如果使用服务器端跟踪,则可以将对性能的影响最小化。


我的服务器和数据库安装在同一台计算机上。现在,如果我通过“ Microsoft SQL Management Studio->工具-> SQL事件探查器”启动SQL事件探查器,那么我可以预期性能下降多少,它基于什么因素?

它基于服务器的繁忙程度,跟踪包含多少个事件和多少列以及您的过滤。过滤可以在两个方向上起作用-一方面,它可以减少返回到UI的行数(真正使探查器比服务器端跟踪受害的部分),但另一方面,如果选择不当,过滤器(例如textdata LIKE '%foo%')会产生相反的效果。太多的变量无法提供神奇的期望,您只需要尝试一下即可。不过,您确实应该使用服务器端跟踪。
阿龙贝特朗

如果您无法访问原始文档,请尝试链接。
马克·洛佩兹

3

以前的海报所说的一切都是正确的。Profiler是一种曾经使用DMO,现在使用SMO捕获跟踪事件的应用程序。与仅使用服务器端跟踪相比,这会增加大量开销。

SMO是一种API,它与客户端应用程序Profiler一起在跟踪过程中添加了额外的“层”。服务器端跟踪将直接从事务队列读取跟踪事件,其产生的开销可以忽略不计。

我已经能够在每秒处理10,000多个事务的SQL Server环境中运行服务器端跟踪。在相同的环境中使用Profiler会使数据库实例崩溃。在任何生产环境中,如果需要跟踪数据库活动,请始终使用服务器端跟踪。Profiler将终止数据库实例。


2

是的,SQL Server Profiler确实会影响性能。

当您使用GUI进行跟踪时,所有事件都将得到同步处理和过滤,因此服务器负载,网络延迟,收集的事件甚至存储收集的事件的存储位置等因素都会增加开销。

正如其他答案所建议的那样,最好使用服务器端跟踪而不是GUI。但是,不建议使用此方法,而应使用扩展事件。(注意:即使使用扩展事件,它比跟踪更轻量,仍然有可能给服务器增加不必要的负载-请参阅第二段中的列表,以考虑如何在设置事件时最大程度地减少开销会话。)

对于服务器负载很大的情况,您需要非常小心所收集的信息,因为测量过程本身可能会影响正在调查的问题。


0

SQL Server Profiler的工作分为两个步骤:首先,您告诉它记录所有查询。然后,您运行一些典型的事务(或者只是让它记录生产)。这将创建一个“测试负载”。然后,您使用测试负载进行实际的性能分析(分析)。

日志记录不是很昂贵,特别是与查询本身的开销相比。


我的服务器和数据库安装在同一台计算机上。现在,如果我通过“ Microsoft SQL Management Studio->工具-> SQL事件探查器”启动SQL事件探查器,那么我可以预期性能下降多少,它基于什么因素?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.