(转)查看SQLServer最耗资源时间的SQL语句
原文地址:https://www.cnblogs.com/My-Dream/p/6270308.html
1.找出执行时间最长的10条SQL(适用于SQL SERVER 2005及其以上版本)

- SELECT top 10
- (total_elapsed_time / execution_count)/1000 N'平均时间ms'
- ,total_elapsed_time/1000 N'总花费时间ms'
- ,total_worker_time/1000 N'所用的CPU总时间ms'
- ,total_physical_reads N'物理读取总次数'
- ,total_logical_reads/execution_count N'每次逻辑读次数'
- ,total_logical_reads N'逻辑读取总次数'
- ,total_logical_writes N'逻辑写入总次数'
- ,execution_count N'执行次数'
- ,creation_time N'语句编译时间'
- ,last_execution_time N'上次执行时间'
- ,SUBSTRING(
- st.text,
- (qs.statement_start_offset/2) + 1,
- (
- (CASE statement_end_offset WHEN -1 THEN DATALENGTH(st.text) ELSE qs.statement_end_offset END - qs.statement_start_offset)/2
- ) + 1
- ) N'执行语句'
- ,qp.query_plan
- FROM sys.dm_exec_query_stats AS qs
- CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
- CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
- WHERE
- SUBSTRING(
- st.text,
- (qs.statement_start_offset/2) + 1,
- (
- (CASE statement_end_offset WHEN -1 THEN DATALENGTH(st.text) ELSE qs.statement_end_offset END - qs.statement_start_offset)/2
- ) + 1
- ) not like '%fetch%'
- ORDER BY total_elapsed_time / execution_count DESC;
- 如果想对SQL作筛选,可将
- not like '%fetch%' 换成 like '%user%'就可以找出SQL语句中含有user关键字的SQL

2 找出执行最慢的SQL语句(适用于SQL SERVER 2005及其以上版本)

- SELECT
- (total_elapsed_time / execution_count)/1000 N'平均时间ms'
- ,total_elapsed_time/1000 N'总花费时间ms'
- ,total_worker_time/1000 N'所用的CPU总时间ms'
- ,total_physical_reads N'物理读取总次数'
- ,total_logical_reads/execution_count N'每次逻辑读次数'
- ,total_logical_reads N'逻辑读取总次数'
- ,total_logical_writes N'逻辑写入总次数'
- ,execution_count N'执行次数'
- ,SUBSTRING(st.text, (qs.statement_start_offset/2) + 1
- ,((CASE statement_end_offset
- WHEN -1 THEN DATALENGTH(st.text)
- ELSE qs.statement_end_offset END
- - qs.statement_start_offset)/2) + 1) N'执行语句'
- ,creation_time N'语句编译时间'
- ,last_execution_time N'上次执行时间'
- FROM
- sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
- WHERE
- SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
- ((CASE statement_end_offset
- WHEN -1 THEN DATALENGTH(st.text)
- ELSE qs.statement_end_offset END
- - qs.statement_start_offset)/2) + 1) not like '�tch%'
- ORDER BY
- total_elapsed_time / execution_count DESC;

3 找出最耗时的前N条T-SQL语句 (适用于SQL SERVER 2005及其以上版本)

- --给N赋初值为30
- declare @n int set @n=30
- ;with maco as
- (
- select top (@n)
- plan_handle,
- sum(total_worker_time) as total_worker_time ,
- sum(execution_count) as execution_count ,
- count(1) as sql_count
- from sys.dm_exec_query_stats group by plan_handle
- order by sum(total_worker_time) desc
- )
- select t.text ,
- a.total_worker_time ,
- a.execution_count ,
- a.sql_count
- from maco a
- cross apply sys.dm_exec_sql_text(plan_handle) t
- /* 结果格式如下
- text total_worker_time execution_count sql_count
- -------- ------------------ ----------------- ---------
- 内容略
- */

4 平均耗CPU最多的前个SQL (SQL SERVER 2005或以上版本)

- SELECT TOP 5 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
- ORDER BY total_worker_time/execution_count DESC

5 平均耗CPU最多的前个SQL (SQL SERVER 2008或以上版本)

- SELECT TOP 20
- total_worker_time/1000 AS [总消耗CPU 时间(ms)],execution_count [运行次数],
- qs.total_worker_time/qs.execution_count/1000 AS [平均消耗CPU 时间(ms)],
- last_execution_time AS [最后一次执行时间],min_worker_time /1000 AS [最小执行时间(ms)],
- max_worker_time /1000 AS [最大执行时间(ms)],
- SUBSTRING(qt.text,qs.statement_start_offset/2+1,
- (CASE WHEN qs.statement_end_offset = -1
- THEN DATALENGTH(qt.text)
- ELSE qs.statement_end_offset END -qs.statement_start_offset)/2 + 1)
- AS [使用CPU的语法], qt.text [完整语法],
- qt.dbid, dbname=db_name(qt.dbid),
- qt.objectid,object_name(qt.objectid,qt.dbid) ObjectName
- FROM sys.dm_exec_query_stats qs WITH(nolock)
- CROSS apply sys.dm_exec_sql_text(qs.sql_handle) AS qt
- WHERE execution_count>1
- ORDER BY (qs.total_worker_time/qs.execution_count/1000) DESC

6 总耗CPU最多的前个SQL (SQL SERVER 2008或以上版本)

- SELECT TOP 20
- total_worker_time/1000 AS [总消耗CPU 时间(ms)],execution_count [运行次数],
- qs.total_worker_time/qs.execution_count/1000 AS [平均消耗CPU 时间(ms)],
- last_execution_time AS [最后一次执行时间],max_worker_time /1000 AS [最大执行时间(ms)],
- SUBSTRING(qt.text,qs.statement_start_offset/2+1,
- (CASE WHEN qs.statement_end_offset = -1
- THEN DATALENGTH(qt.text)
- ELSE qs.statement_end_offset END -qs.statement_start_offset)/2 + 1)
- AS [使用CPU的语法], qt.text [完整语法],
- qt.dbid, dbname=db_name(qt.dbid),
- qt.objectid,object_name(qt.objectid,qt.dbid) ObjectName
- FROM sys.dm_exec_query_stats qs WITH(nolock)
- CROSS apply sys.dm_exec_sql_text(qs.sql_handle) AS qt
- WHERE execution_count>1
- ORDER BY total_worker_time DESC

(转)查看SQLServer最耗资源时间的SQL语句的更多相关文章
- 查看SQLServer最耗资源时间的SQL语句
执行最慢的SQL语句 SELECT (total_elapsed_time / execution_count)/1000 N'平均时间ms' ,total_elapsed_time/1000 N'总 ...
- SQLServer最耗资源时间的SQL语句
作者kolachen http://blog.sina.com.cn/s/blog_63f3e0060102vcm0.html 先拷过来了,等有空再研究一下 执行最慢的SQL语句 SELECT (to ...
- log4j向oracle中插入一条系统当前时间的sql语句
配置log4j,要向oracle插入一条系统当前时间的sql语句,按网上查找的总是出现各种各样的报错,最后总结出的写法是: ### shezhi### log4j.rootLogger = debug ...
- 获取SQLServer的最完整数据字典的SQL语句
原文:获取SQLServer的最完整数据字典的SQL语句 原创于2008年06月18日,2009年10月18日迁移至此. 获取SQLServer 的最完整数据字典的SQL 语句 其实网上已经流传了 ...
- 浅析SqlServer简单参数化模式下对sql语句自动参数化处理以及执行计划重用
我们知道,SqlServer执行sql语句的时候,有一步是对sql进行编译以生成执行计划, 在生成执行计划之前会去缓存中查找执行计划 如果执行计划缓存中有对应的执行计划缓存,那么SqlServer就会 ...
- MyBatis源码分析-SQL语句执行的完整流程
MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以对配置和原生Map使用简 ...
- ORACLE 查看有多个执行计划的SQL语句
在SQL优化过程,有时候需要查看哪些SQL具有多个执行计划(Multiple Executions Plans for the same SQL statement),因为同一个SQL有多个执行计划一 ...
- Oracle数据库更新时间的SQL语句
---Oracle数据库更新时间字段数据时的sql语句---格式化时间插入update t_user u set u.name='pipi',u.modifytime=to_date('2015-10 ...
- Oracle、DB2、SQLSERVER、Mysql、Access分页SQL语句梳理
最近把平时在项目中常用到的数据库分页sql总结了下.大家可以贴出分页更高效的sql语句.sqlserver分页 第一种分页方法 需用到的参数: pageSize 每页显示多少条数据 pageNumbe ...
随机推荐
- js如何在浏览器添加cookie(添加、获取、删除)
首先,简单用js将cookie保存到浏览器中,具体可按F12在这里查看(火狐浏览器) 1.js脚本方法 1)添加cookie方法 //添加cookie var addCookie = function ...
- Linux中的#和$区别
[#]代表 root权限[$]代表普通用户
- EasyExcel导入工具(SpringMVC下使用)
easyExcel:由阿里巴巴公司开发,由github托管 github上有详细使用文档 github地址:https://github.com/alibaba/easyexcel/blob/mast ...
- Python开发【项目】:学员管理系统(mysql)
需求: 用户角色,讲师\学员, 用户登陆后根据角色不同,能做的事情不同,分别如下 讲师视图: 管理班级,可创建班级,根据学员qq号把学员加入班级 可创建指定班级的上课纪录,注意一节上课纪录对应多条学员 ...
- HTTP,RFC自学心得
HTTP协议描述的是:发送方与接收方的通信协议,通过两方的自觉遵守而存在,当然有不少的浏览器并没有百分百遵守这份协议. HTTP是运行于应用层的协议,基于TCP协议而运作.基本上是客户/服务器对答模式 ...
- VBA消息框
MsgBox函数显示一个消息框,并等待用户点击一个按钮,然后根据用户点击该按钮的动作执行. 语法 MsgBox(prompt[,buttons][,title][,helpfile,context]) ...
- git不添加.idea等IDE配置文件夹
git不添加.idea等IDE配置文件夹由于.idea(intellJ,pycharm)的IDE文件夹很常出现,建议将gitignore设置为全局. git config --global core. ...
- Scrapy、Scrapy-redis组件
目录 Scrapy 一.安装 二.基本使用 1. 基本命令 2.项目结构以及爬虫应用简介 3. 小试牛刀 4. 选择器 5. 格式化处理 6.中间件 7. 自定制命令 8. 自定义扩展 9. 避免重复 ...
- ggplot2 multiply graphs on one figure
library(ggplot2)library(grid)grid.newpage()pushViewport(viewport(layout = grid.layout(1,2)))vplayout ...
- linux日常命令之三
一.换行符 linux换行符为\n,而windows换行符为\r\n. 因此,linux的原生文本文件,换行符为\n,而windows为\r\n:将linux文件拷贝至windows,换行符保持不变, ...