当前位置: 首页 > 知识库问答 >
问题:

诊断存储过程争用

朱通
2023-03-14

我们的产品有几个复杂的存储过程,它们利用(MSSQLS2008R2/2012)CTE和/或临时表/表变量来计算菜单或级联权限结构,以便使用系统。

我们通过SQL事件探查器注意到,有时过程可能需要比正常情况多几个数量级的时间才能返回。我们想知道采取行动的最佳原因,以便收集信息来确定什么是阻塞/争用。一个很好的例子是一个存储过程,如果我在query analyser中手动运行它,它需要222毫秒来运行实时数据库,然而我们已经看到了9000毫秒和5000毫秒的时间。

在不深入讨论实际sp的细节的情况下,您如何开始识别哪些资源在您看到分析器中查询的持续时间很长时被阻止?

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

共有1个答案

龙飞文
2023-03-14

作为跟踪的替代方法,您是否考虑过扩展事件?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/

 类似资料:
  • 问题内容: 我试图在postgres 9.3上使用sql调用函数内的函数。 这个问题与我的另一篇文章有关。 我写了下面的函数。到目前为止,我还没有合并任何类型的save-output(COPY)语句,因此我试图通过创建嵌套函数print-out函数来解决此问题。 以上功能有效。 尝试创建嵌套函数。 调用嵌套函数。 输出 上面给出了这个。但是,当在print_out()中将arg1,arg2替换为’

  • 数据访问层支持存储过程调用,调用数据库存储过程使用下面的方法: $resultSet = Db::query('call procedure_name'); foreach ($resultSet as $result) { } 存储过程返回的是一个数据集,如果你的存储过程不需要返回任何的数据,那么也可以使用execute方法: Db::execute('call procedure_name'

  • 问题内容: 我在任何地方都找不到此答案,但是可以从MySQL中的另一个存储过程调用存储过程吗?我想找回标识值,并在父存储过程中使用它。我们不能再使用FUNCTIONS! 问题答案: 参数应该可以帮助您将值返回给调用过程。基于此,解决方案必须是这样的。

  • 如果 Flarum 无法安装或者是没有按照预期运行,第一件需要做的事情就是再次检查你的环境是否达到了系统要求。如果你缺失部分 Flarum 的依赖项(例如 PHP 的 fileinfo 扩展),你将需要先处理这些问题。 接下来,你应该花上几分钟在支持论坛和问题追踪器内检索。有可能有人已经汇报了这个问题,或者解决方案正在讨论,或者已经有解决方案。在检索过后,如果你仍然没有发现关于这个问题的信息的话,

  • Composer默认使用Winston日志记录模块,并使用Config模块查找任何配置信息。如果没有找到,那么将使用一组默认值。 如果没有设置配置文件,配置模块会写出警告。例如。WARNING: No configurations found in configuration directory。如果您对默认值感到满意,并且不希望在应用程序中使用配置,则可以使用环境变量来抑制这种情况。在这里查看更

  • 什么是抓取诊断 抓取诊断工具,可以让站长从百度蜘蛛的视角查看抓取内容,自助诊断百度蜘蛛看到的内容,和预期是否一致。每个站点每周可使用70次,抓取结果只展现百度蜘蛛可见的前200KB内容。 抓取诊断工具能做什么 目前抓取诊断工具有如下作用: 1、诊断抓取内容是否符合预期,譬如很多商品详情页面,价格信息是通过JavaScript输出的,对百度蜘蛛不友好,价格信息较难在搜索中应用。问题修正后,可用诊断工