繁体   English   中英

诊断存储的Proc争用

[英]Diagnose Stored Proc contention

我们的产品具有一些复杂的存储过程,这些过程利用(MSSQL2008r2 / 2012)CTE和/或临时表/表变量来计算菜单或级联权限结构,以供系统使用。

我们已经通过SQL事件探查器注意到,有时过程要比平常返回大几个数量级。 我们想知道最好的原因是为了收集信息以确定什么是阻止/竞争。 一个很好的例子是一个存储过程,如果我在查询分析器中手动运行它,则需要222ms才能对实时数据库运行,但是我们看到的时间为9000ms和5000ms。

无需详细讨论实际的sp,如何在分析器中看到较长的查询时间时就开始识别哪些资源被阻止了?

我已经看到有关可以运行哪些查询来诊断当前问题的建议,但是在这种情况下,可能会发生争执,而我们却不在现场。 因此,理想情况下,SQL Profiler跟踪似乎是理想的起点? 在持续时间跟踪中看到较长的持续时间时,我是否需要两个单独的探查器跟踪并进行比较?

作为跟踪的替代方法,您是否考虑过扩展事件? http://msdn.microsoft.com/en-gb/library/bb630282(v=sql.110).aspx

与跟踪输出相比,我在读取扩展事件的输出方面获得了更大的成功,并且有许多示例可以帮助您创建一个事件。

我个人曾用它来查找阻塞:

https://www.sqlskills.com/blogs/jonathan/an-xevent-a-day-21-of-31-the-future-tracking-blocking-in-denali/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM