作为开发人员,我经常使用 SQL Profiler。这是一个很好的调试工具,既可以跟踪我的代码在做什么,也可以分析性能问题。
但我一直在我的开发环境中使用它,并且以一种非常可控的方式。
- 启动我的应用程序,并使其进入特定状态
- 在探查器上启动跟踪
- 在我的应用程序上执行特定的操作序列
- 停止跟踪并检查结果。
SQL Profiler 能否在生产环境中实际使用?
我首先担心的是它会降低性能。
我的第二个担心是,因为它是在生产中,所以你不会触发有趣的动作本身。您必须让分析器长时间运行,然后分析结果。结果集会变得太笨重吗?(占用太多磁盘空间并且太难查询)。
有人在生产中使用 SQL Profiler 吗?
我一直对生产使用 SQL Profiler。如果针对服务器正确完成(过滤以便您取回非常少量的数据),则风险最小。追查一切是没有用的。
使用 Sql Server Profiler(GUI 工具)来跟踪生产服务器不是一个好主意。但这取决于负载。使用服务器端 sql 跟踪(请参阅sp_trace_XXX过程)代替它。我也找到了文章:
性能影响:Profiler 跟踪与服务器端 SQL 跟踪,
在 SQL Server 中自动执行服务器端跟踪
避免使用 Profiler 引起问题
也许它会很有趣和有用。
在线预订说:
是的,监控行为需要一些资源。在过载的服务器上运行它可能会杀死它。
您实际上将监控现实生活中的负载:您的行为可能会迷失在这种负载的噪音中。
我们有时在生产中运行它。主要是针对特定代码使用文本过滤器,或者使用 CPU/持续时间过滤器来捕获运行时间较长的查询。而且我们不会尝试捕获 XML 执行计划或一些这样的废话
关键是要知道你在找什么:我们不倾向于让它运行并捕获所有东西。
在这种情况下,如果您想查看某些操作的结果,您可以在几个小时内完成吗?
Profiler 将始终引入性能影响。
如果您使用的是 SQL Server 2008R2+,则可以使用扩展事件。这提供了您在探查器中看到的大部分信息,但性能影响很小。
书籍在线介绍 http://technet.microsoft.com/en-us/library/bb630354(v=sql.105).aspx
此功能在 SQL Server 2012 中获得了重大更新,现在包括 SSMS 中的 GUI。