(转)查看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 ...
随机推荐
- Mysql phpStudy升级Mysql版本,流产了怎么办?
网上有一些phpStudy升级mysql的方法,如: https://www.cnblogs.com/GreenForestQuan/p/6496431.html 很不错,我的电脑一次成功,但是同事的 ...
- Java框架部分---面试题
说说Spring? Spring的核心是控制反转.依赖注入,Aop(面向切面)相当于把每个bean与bean之间的关系交给第 三方容器进行管理. 说SpringIOC.SpringAOP? Sprin ...
- JavaWeb基础-servlet
Servlet简介 Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤: 1.编写一个Java类,实现s ...
- web roadmap
- L330 Black hole picture captured for first time in space ‘breakthrough’
Black hole picture captured for first time in space ‘breakthrough’ Astronomers have captured the fir ...
- mysql-5.7.23-winx64.zip安装教程
请参考这篇文章:https://www.jianshu.com/p/94647c0c98c4
- C# 时间控件 竖直进度条 饼图显示 仪表盘 按钮基础控件库
Prepare 本文将使用一个NuGet公开的组件来实现一些特殊的控件显示,方便大家进行快速的开发系统. 在Visual Studio 中的NuGet管理器中可以下载安装,也可以直接在NuGet控制台 ...
- ARP【地址解析协议】理解
今天是来公司的第二个周一,早上收到Boss抄送的邮件说网段之间无法通信,心想现在还不太懂这个原理,于是就在网络上搜罗了一下资料,作此整理(大部分文字内容来自网络) 1. 同网段和不同网段设备通信原理详 ...
- 机器视觉:SSD Single Shot MultiBox Detector
今天介绍目标检测中非常著名的一个框架 SSD,与之前的 R-CNN 系列的不同,而且速度比 YOLO 更快. SSD 的核心思想是将不同尺度的 feature map 分成很多固定大小的 box,然后 ...
- 【转载】 强化学习(十一) Prioritized Replay DQN
原文地址: https://www.cnblogs.com/pinard/p/9797695.html ------------------------------------------------ ...