user960567 Asked: 2020-11-16 04:02:37 +0800 CST2020-11-16 04:02:37 +0800 CST 2020-11-16 04:02:37 +0800 CST 活跃的昂贵查询和最近的昂贵查询的含义 772 我试图了解活动监视器中活动的昂贵查询和最近的昂贵查询。这里的贵是什么意思?就 CPU、块、内存、读取而言,这是否意味着昂贵? sql-server sql-server-2014 1 个回答 Voted Best Answer Tibor Karaszi 2020-11-16T09:27:41+08:002020-11-16T09:27:41+08:00 这取决于您按哪一列排序。为了更深入地挖掘,我建议您阅读这些源代码。前段时间我写了一篇关于 AM 的博客,这是那篇博文的一部分: “最近的昂贵查询”窗格: 这显示了自上次快照以来执行的最昂贵的查询,基于您排序的列。如果您有一个 10 秒的快照间隔,您将只能看到在这 10 秒内执行的查询。AM 使用名为#am_get_querystats 的过程来收集信息。这个过程中发生了一些事情,但在最基本的层面上,它使用 sys.dm_exec_query_stats 和 sys.dm_exec_requests 从缓存中获取查询和当前正在执行的查询。然后它会进行一些处理并将结果存储在临时表中,以便我们稍后可以根据我们感兴趣的指标对不同的列进行排序。如果你想更深入地挖掘,我建议你花一些时间研究源代码。 “活跃的昂贵查询”窗格: 这是非常直接的。它执行一个使用 sys.dm_exec_requests 连接到其他一些 DMV 的查询。 这是我的博客文章的链接: http: //sqlblog.karaszi.com/explaining-activity-monitor/
这取决于您按哪一列排序。为了更深入地挖掘,我建议您阅读这些源代码。前段时间我写了一篇关于 AM 的博客,这是那篇博文的一部分:
“最近的昂贵查询”窗格:
这显示了自上次快照以来执行的最昂贵的查询,基于您排序的列。如果您有一个 10 秒的快照间隔,您将只能看到在这 10 秒内执行的查询。AM 使用名为#am_get_querystats 的过程来收集信息。这个过程中发生了一些事情,但在最基本的层面上,它使用 sys.dm_exec_query_stats 和 sys.dm_exec_requests 从缓存中获取查询和当前正在执行的查询。然后它会进行一些处理并将结果存储在临时表中,以便我们稍后可以根据我们感兴趣的指标对不同的列进行排序。如果你想更深入地挖掘,我建议你花一些时间研究源代码。
“活跃的昂贵查询”窗格:
这是非常直接的。它执行一个使用 sys.dm_exec_requests 连接到其他一些 DMV 的查询。
这是我的博客文章的链接: http: //sqlblog.karaszi.com/explaining-activity-monitor/