首页 > 数据库 >SQLServer如何查询近3分钟最消耗CPU的SQL

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

时间:2024-05-28 10:00:59浏览次数:33  
标签:qs dm exec SQLServer sys SQL CPU

在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

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

标签:qs,dm,exec,SQLServer,sys,SQL,CPU
From: https://www.cnblogs.com/mq0036/p/18217219

相关文章

  • SQLServer如何监控阻塞会话
    一、查询阻塞和被阻塞的会话SELECTr.session_idAS[BlockedSessionID],r.blocking_session_idAS[BlockingSessionID],r.wait_type,r.wait_time,r.wait_resource,s1.program_nameAS[BlockedProgramName],s1.login_nameAS[Blo......
  • SQLServer统计监控SQL执行计划突变的方法
    使用动态管理视图(DMVs)来检测SQL执行计划的突变,你需要关注那些能够提供查询执行统计和计划信息的视图。以下是一些可以用于此目的的DMVs以及相应的查询示例:sys.dm_exec_query_stats:这个视图提供了关于SQLServer中查询执行的统计信息,包括CPU时间、总工作时间、执行次数等。SE......
  • CPU温度告警
    CPU温度阈值CPU温度有3档阈值(TCC\PROCHOT\ThermalTrip),HDM中的sensor是CPUDTS,如CPUDTS=0对应的是TCC告警。ThermalControlCircuit,TCC:轻微,温度控制电路PROCHOT:紧急,处理器过热ThermalTrip:极限温度,热跳闸(1)TCC不会影响CPU频率,也不会触发关机;但HDM会出现警报提示(2)如果C......
  • MySQL数据库语法(五-->多表查询)
    多表查询1.innerjoin:代表选择的是两个表的交差部分。内连接就是表间的主键与外键相连,只取得键值一致的,可以获取双方表中的数据连接方式。语法如下:SELECT列名1,列名2...FROM表1INNERJOIN表2ON表1.外键=表2.主键WhERE条件语句;2.leftjoin:代表选择的是前面......
  • SQLServer如何监控阻塞会话
    一、查询阻塞和被阻塞的会话SELECTr.session_idAS[BlockedSessionID],r.blocking_session_idAS[BlockingSessionID],r.wait_type,r.wait_time,r.wait_resource,s1.program_nameAS[BlockedProgramName],s1.login_nameAS[Block......
  • Mysql单表普通查询(新手推荐)
    大家在学校里学mysql查询的时候,尤其是遇到比较复杂查询的时候,不知道有没有经常遇到问题。小编在学习mysql的时候,经常哪个怎么搞,得出的值也老是不对,今天在这里分享一些原理性的东西,帮助大家理解如何去查询基础 3、select...聚合函数from表名1、where.........
  • SqlSugar:基于SQLSugar框架在 .Net环境中搭建PostgreSQL数据库访问、操作的框架,C#连接
    SqlSugar 是一款老牌.NET开源ORM框架,由果糖大数据科技团队维护和更新,开箱即用最易上手的ORM 优点:【生态丰富】【高性能】【超简单】【功能全面】【多库兼容】【适合产品】 【SqlSugar视频教程】 支持:.netframework .netcore3.1 .ne5.net6.net7.net8.n......
  • MySQL中如何快速定位占用CPU过高的SQL
    作为DBA工作中都会遇到过数据库服务器CPU飙升的场景,我们该如何快速定位问题?又该如何快速找到具体是哪个SQL引发的CPU异常呢?下面我们说两个方法。聊聊MySQL中如何快速定位占用CPU过高的SQL。技术人人都可以磨炼,但处理问题的思路和角度各有不同,希望这篇文章可以抛砖引玉。 以一......
  • mysql存储地理信息的方法
    MySQL存储地理信息通常使用GEOMETRY数据类型或其子类型(如POINT,LINESTRING,POLYGON等)。为了支持这些数据类型,MySQL提供了SPATIAL索引,这允许我们执行高效的地理空间查询。1.创建支持地理信息的表首先,我们需要一个包含GEOMETRY或其子类型列的表。以下是一个示例,展示......
  • 数据库初始,SQL语句介绍,MySQL数据库安装,SQL语句基础,操作MySQL数据库
    Ⅰ数据库初识【一】存储数据的演变过程【1】文件基于内存保存在早期,随意地存放到一个文件中、数据格式也是千差万别的,完全取决于个人员工管理系统是基于列表或字典(内存)存储数据【2】文件操作用本地的文本文件存储数据有的人喜欢存储到本地的一个文件中有的人喜欢存......