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

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

时间:2024-05-13 08:58:22浏览次数:14  
标签: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语句。

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

相关文章

  • php centos选择sqlserver的驱动和扩展选择版本的说明
    2023年2月23日13:41:48首先是phpphp扩展驱动数据库的关系官方文档说明:https://learn.microsoft.com/zh-cn/sql/connect/php/step-1-configure-development-environment-for-php-development?view=sql-server-2017https://learn.microsoft.com/zh-cn/sql/connect/php/syste......
  • Mysql中的索引下推优化
    当索引下推开启后,如果where子句中的部分条件可以通过索引中的列来进行过滤,MySQL会把这部分条件也下推给存储引擎。这里的关键是下推的这部分条件用于过滤而非定位数据。直接看官方的例子:SELECT*FROMpeopleWHEREzipcode='95054'ANDlastnameLIKE'%etrunia%'ANDad......
  • 初识PostgreSql
    前言PostgreSql常被称为Postgres,简称PG,后文中以PG称呼。是当今非常流行的一种数据库。为什么使用PG在分析这个问题之前,我认为有必要说一说Oracle和MySql这两家数据库。OracleOracle作为占有率最高的数据库,由Oracle公司开发,提供商业支持,其流行的原因在于其强大的性能......
  • 随笔-调试-观察CPU和内存
    目录观察应用CPU、内存使用情况实时打印(一般用于观察变化)打印应用占用CPU大于阈值的线程观察系统cpu、内存使用最多的应用一般方式其他方式观察应用CPU、内存使用情况实时打印(一般用于观察变化)$xpid=$(pidofgdb);top-p$xpid-b-d1|awk'/(^\s*[0-9])/{printstrftim......
  • Pgsql报错修复
     1   这里更改安装目录bin下面例如E:\WorkingSoftware\PostgreSql\16\bin 更改权限,下面都改下  2如果安装时提示databse出错,就初始化下 E:\WorkingSoftware\PostgreSql\16\bin\pg_ctl.exe-DE:\WorkingSoftware\PostgreSql\16\datainitdb ......
  • 厉害了!12秒将百万数据通过EasyExcel导入MySQL数据库中
    一、写在开头我们在上一篇文章中提到了通过EasyExcel处理Mysql百万数据的导入功能(一键看原文),当时我们经过测试数据的反复测验,100万条放在excel中的数据,4个字段的情况下,导入数据库,平均耗时500秒,这对于我们来说肯定难以接受,今天我们就来做一次性能优化。二、性能瓶颈分析一般的......
  • MySQL5.7安装详细过程--window系统
    一:MySQL5.7安装详细过程--window系统1.1、下载MySQL5.7安装包https://downloads.mysql.com/archives/community/1.2、将文件解压到盘符中你可以解压到你想解压的位置,放在C或其他盘符都可以。1.3、配置MySQL的环境变量由于我们下载的不是exe或者msi版本,不能直接双击安装,所以需要手......
  • Docker 部署MySQL
    1、创建配置目录mkdir-pMySQL目录/conf2、切换到配置目录cdMySQL目录/conf3、创建配置文件vimmy.cnf[client]#设置mysql客户端连接服务端时默认使用的端口port=3306default-character-set=utf8mb4[mysql]#设置mysql客户端默认字符集default-character-set=ut......
  • Sqlite3数据库初接触基本操作
    前言笔者接触到一个全新的数据库,知道该数据库的类型是 Sqlite3,但不知道该数据的具体组成比如具体由哪些表或者数据内容。对数据概况探索1.经过查阅“https://blog.csdn.net/luoshabugui/article/details/108327936”参考该博客(感谢作者:丸子叮咚响),知道数据有以下基本内容:每......
  • sql学习:终于把sql case语句使用讲明白了,一看就懂
    作者|幸福it民工来源|今日头条在数据库查询分析中,经常遇到case条件判断,总结出来供大家参考,下面通过两个实例给大家讲解。case用途介绍:CASE是多条件分支语句,相比IF…ELSE语句,CASE语句进行分支流程控制可以使代码更加晰,易于理解。CASE语句也根据表达式逻辑值的真假来决定执......