SQLServer如何查询近3分钟最消耗CPU的SQL

在SQL Server中,要查询近3分钟最消耗CPU的SQL语句,可以使用sys.dm_exec_query_stats动态管理视图结合sys.dm_exec_sql_text函数来获取SQL语句的文本。不过,直接查询近3分钟的数据可能需要一些额外的逻辑来筛选时间范围,因为sys.dm_exec_query_stats并不直接提供时间筛选的功能。

一种方法是首先确定当前时间之前3分钟的时间戳,然后使用这个时间戳来筛选sys.dm_exec_query_stats中的last_execution_time字段。以下是一个示例查询,它可能需要根据你的具体需求进行调整:

复制代码
复制代码
DECLARE @ThreeMinutesAgo DATETIME;
SET @ThreeMinutesAgo = DATEADD(MINUTE, -3, GETDATE());

SELECT TOP 10
    total_worker_time / execution_count AS [Avg CPU Time],
    SUBSTRING(st.text, (qs.statement_start_offset / 2) + 1,
        ((CASE qs.statement_end_offset
            WHEN -1 THEN DATALENGTH(st.text)
            ELSE qs.statement_end_offset
        END - qs.statement_start_offset) / 2) + 1) AS statement_text
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
WHERE qs.last_execution_time > @ThreeMinutesAgo
ORDER BY total_worker_time / execution_count DESC;
复制代码
复制代码

这个查询首先计算出当前时间之前3分钟的时间戳,然后使用这个时间戳作为筛选条件来获取last_execution_time字段大于这个时间戳的所有记录。接着,它计算平均CPU时间,并按降序排列以找到消耗CPU最多的SQL语句。

 

2024-05-28 09:55:49【出处】:https://www.cnblogs.com/tianqing/p/18188566

=======================================================================================

posted on   jack_Meng  阅读(15)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
历史上的今天:
2021-05-28 博客园中TinyMCE编辑器的快捷键
2021-05-28 23种设计模式娓娓道来
2021-05-28 TotalCommander使用教程

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示

喜欢请打赏

扫描二维码打赏

支付宝打赏

主题色彩