@SortOrder='cpu' 上的 sp_BlitzCache 结果缓慢

Guy*_*Guy 5 performance sql-server sql-server-2012 sp-blitzcache

sp_BlitzCache几天来,我一直在使用我的数据库来调查一些问题。这是一个巨大的帮助,但就在今天,它开始表现得有点奇怪,我很好奇是否有人知道发生了什么。

昨天我用@SortOrder“读取”或“CPU”运行了许多检查,它运行良好,并且总是在大约相同的时间内返回结果。

今天,'reads' 返回的时间与昨天大致相同,但 'cpu' 需要 10 倍或更多的时间。它进入“检查功能”,然后在那里坐了很长时间。'xpm' 也和往常一样快。

我正在使用 v5.7(20170901)

我意识到我的 SQL 会话已经打开了 +24 小时,并认为##temp文件可能变得太大了。但是在我重新启动会话并且那些表消失后,cpu 排序顺序仍然很慢。所以不是这样。

关于什么会导致这种情况的任何想法?

Eri*_*ing 5

最可能的原因是缓存中的一个非常大的执行计划没有出现在其他排序顺序中。当我们点击RelOpXML 部分时,这当然可以阻止事情。

您可以使用该@SkipAnalysis参数,并将其设置为 1。这将跳过所有 XML 分析,但它会为您提供结果。您将需要使用@ExpertModeSqlHandle 和 QueryHash 来获取阻止事情的大计划。

EXEC sp_BlitzCache @ExpertMode = 1, @SkipAnalysis = 1
Run Code Online (Sandbox Code Playgroud)

当您确定它是哪个计划时,您可以使用@IgnoreSqlHandles@IgnoreQueryHashes将来跳过缓存中的该计划。

EXEC sp_BlitzCache @IgnoreQueryHashes ='', @IgnoreSqlHandles = ''
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!