检测Sql Server服务器SQL语句执行情况
1、查找目前SQL Server所执行的SQL语法,并展示资源情况:
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
29
|
SELECT s2.dbid , DB_NAME(s2.dbid) AS [数据库名] , --s1.sql_handle , ( SELECT TOP 1 SUBSTRING (s2.text, statement_start_offset / 2 + 1, ( ( CASE WHEN statement_end_offset = -1 THEN ( LEN( CONVERT (NVARCHAR( MAX ), s2.text)) * 2 ) ELSE statement_end_offset END ) - statement_start_offset ) / 2 + 1) ) AS [语句] , execution_count AS [执行次数] , last_execution_time AS [上次开始执行计划的时间] , total_worker_time AS [自编译以来执行所用的 CPU 时间总量(微秒)] , last_worker_time AS [上次执行计划所用的 CPU 时间(微秒)] , min_worker_time AS [单次执行期间曾占用的最小 CPU 时间(微秒)] , max_worker_time AS [单次执行期间曾占用的最大 CPU 时间(微秒)] , total_logical_reads AS [总逻辑读] , last_logical_reads AS [上次逻辑读] , min_logical_reads AS [最少逻辑读] , max_logical_reads AS [最大逻辑读] , total_logical_writes AS [总逻辑写] , last_logical_writes AS [上次逻辑写] , min_logical_writes AS [最小逻辑写] , max_logical_writes AS [最大逻辑写] FROM sys.dm_exec_query_stats AS s1 CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS s2 WHERE s2.objectid IS NULL ORDER BY last_worker_time DESC |
2、展示耗时查询:
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
29
30
|
-- List expensive queries DECLARE @MinExecutions int ; SET @MinExecutions = 5 SELECT EQS.total_worker_time AS TotalWorkerTime ,EQS.total_logical_reads + EQS.total_logical_writes AS TotalLogicalIO ,EQS.execution_count As ExeCnt ,EQS.last_execution_time AS LastUsage ,EQS.total_worker_time / EQS.execution_count as AvgCPUTimeMiS ,(EQS.total_logical_reads + EQS.total_logical_writes) / EQS.execution_count AS AvgLogicalIO ,DB. name AS DatabaseName , SUBSTRING (EST.text ,1 + EQS.statement_start_offset / 2 ,( CASE WHEN EQS.statement_end_offset = -1 THEN LEN( convert (nvarchar( max ), EST.text)) * 2 ELSE EQS.statement_end_offset END - EQS.statement_start_offset) / 2 ) AS SqlStatement -- Optional with Query plan; remove comment to show, but then the query takes !!much longer time!! --,EQP.[query_plan] AS [QueryPlan] FROM sys.dm_exec_query_stats AS EQS CROSS APPLY sys.dm_exec_sql_text(EQS.sql_handle) AS EST CROSS APPLY sys.dm_exec_query_plan(EQS.plan_handle) AS EQP LEFT JOIN sys.databases AS DB ON EST.dbid = DB.database_id WHERE EQS.execution_count > @MinExecutions AND EQS.last_execution_time > DATEDIFF( MONTH , -1, GETDATE()) ORDER BY AvgLogicalIo DESC ,AvgCPUTimeMiS DESC |
3、当前进程及其语句:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
-- Current processes and their SQL statements SELECT PRO.loginame AS LoginName ,DB. name AS DatabaseName ,PRO.[status] as ProcessStatus ,PRO.cmd AS Command ,PRO.last_batch AS LastBatch ,PRO.cpu AS Cpu ,PRO.physical_io AS PhysicalIo ,SES.row_count AS [RowCount] ,STM.[text] AS SQLStatement FROM sys.sysprocesses AS PRO INNER JOIN sys.databases AS DB ON PRO.dbid = DB.database_id INNER JOIN sys.dm_exec_sessions AS SES ON PRO.spid = SES.session_id CROSS APPLY sys.dm_exec_sql_text(PRO.sql_handle) AS STM WHERE PRO.spid >= 50 -- Exclude system processes ORDER BY PRO.physical_io DESC ,PRO.cpu DESC ; |
4、存储过程执行情况:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
-- Stored Procedure Execution Statistics SELECT ISNULL (DBS. name , '' ) AS DatabaseName ,OBJECT_NAME(EPS.object_id, EPS.database_id) AS ObjectName ,EPS.cached_time AS CachedTime ,EPS.last_elapsed_time AS LastElapsedTime ,EPS.execution_count AS ExecutionCount ,EPS.total_worker_time / EPS.execution_count AS AvgWorkerTime ,EPS.total_elapsed_time / EPS.execution_count AS AvgElapsedTime ,(EPS.total_logical_reads + EPS.total_logical_writes) / EPS.execution_count AS AvgLogicalIO FROM sys.dm_exec_procedure_stats AS EPS LEFT JOIN sys.databases AS DBS ON EPS.database_id = DBS.database_id ORDER BY AvgWorkerTime DESC ; |
5、开销较大的查询:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
/* 开销较大的查询 */ SELECT ss.SUM_execution_count , t.text , ss.SUM_total_elapsed_time , ss.sum_total_worker_time , ss.sum_total_logical_reads , ss.sum_total_logical_writes FROM ( SELECT S.plan_handle , SUM (s.execution_count) SUM_Execution_count , SUM (s.total_elapsed_time) SUM_total_elapsed_time , SUM (s.total_worker_time) SUM_total_worker_time , SUM (s.total_logical_reads) SUM_total_logical_reads , SUM (s.total_logical_writes) SUM_total_logical_writes FROM sys.dm_exec_query_stats s GROUP BY S.plan_handle ) AS ss CROSS APPLY sys.dm_exec_sql_text(ss.plan_handle) t ORDER BY sum_total_logical_reads DESC |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
select er.session_id, cast(csql.text AS varchar(255)) AS CallingSQL from master.sys.dm_exec_requests er WITH (NOLOCK) CROSS APPLY fn_get_sql (er.sql_handle) csql where er.session_id =309 |
检测Sql Server服务器SQL语句执行情况的更多相关文章
- 使用 sql server 默认跟踪分析执行的 SQL 语句
如果没有启用 SQL SERVER 的跟踪器来跟踪 SQL SERVER 的 SQL 执行情况,又想查最近的 SQL 执行情况,网上一般说是使用 LogExprorer 这个工具,网上找了这个工具很久 ...
- sql server中如何查看执行效率不高的语句
sql server中,如果想知道有哪些语句是执行效率不高的,应该如何查看呢?下面就将为您介绍sql server中如何查看执行效率不高的语句,供您参考. 在测量功能时,先以下命令清除sql se ...
- Sql server的Merge语句,源表中如果有重复数据会导致执行报错
用过sql server的Merge语句的开发人员都应该很清楚Merge用来做表数据的插入/更新是非常方便的,但是其中有一个问题值得关注,那就是Merge语句中的源表中不能出现重复的数据,我们举例来说 ...
- [SQL] sql server中如何查看执行效率不高的语句
sql server中,如果想知道有哪些语句是执行效率不高的,应该如何查看呢?下面就将为您介绍sql server中如何查看执行效率不高的语句,供您参考.在测量功能时,先以下命令清除sql serve ...
- Linux下用freetds执行SQL Server的sql语句和存储过程
Linux下用freetds执行SQL Server的sql语句和存储过程 http://www.linuxidc.com/Linux/2012-06/61617.htm freetds相关 http ...
- SQL Server查看Sql语句执行的耗时和IO消耗
原文:SQL Server查看Sql语句执行的耗时和IO消耗 在做系统过程中,经常需要针对某些场景进行性能优化,那么如何判定性能优化的效果呢?肯定需要知道优化之前Sql语句的耗时和优化之后Sql语句的 ...
- SQL Server服务器名称与默认实例名不一致的修复方法
SQL Server服务器名称与默认实例名不一致的修复方法 分类: 个人累积 SQl SERVER 数据库复制2011-08-10 09:49 10157人阅读 评论(0) 收藏 举报 sql ser ...
- SQL SERVER 作业(或叫执行计划)
如果在SQL Server 里需要定时或者每隔一段时间执行某个存储过程或3200字符以内的SQL语句时,可以用管理->SQL Server代理->作业来实现. 1.管理->SQL S ...
- SQL Server经典sql语句大全(转)
一.基础1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份数 ...
随机推荐
- 使用djcelery发送邮件
发送邮件作为一个独立的业务模块,我们把它放到另外一个文件中,定义一个task文件,里面定义发送邮件的功能, 需要用到django.core.mail 里面的send_mail这个函数 发送邮件与网络环 ...
- 解决Windows10下无法对docker容器进行端口访问(端口映射的问题)
解决Windows10下无法对docker容器进行端口访问(端口映射的问题) 问题详情 在Windows10系统服务器中安装了docker和docker-compose 并尝试在其中运行Nginx服务 ...
- SCTF2018-Event easiest web - phpmyadmin
6月19日的SCTF的web送分题. 打开链接是一个phpmyadmin的登陆界面,尝试用默认账号:root 密码:root登陆 于是直接进去了,首先看下数据库,除了些初始化的库以外,abc这个库比 ...
- tesseract_ocr+pytesseract图像识别
一.windows安装配置 其他系统安装配置参考github:https://github.com/tesseract-ocr/tesseract/wiki 下载tesseract-ocr参考:htt ...
- [CQOI2009]跳舞
思路:二分答案+最大流.二分答案$m$,表示最多跳$m$轮.将每个人拆成两个点$a_i$$b_i$,$a_i$表示与任何人跳舞,$b_i$表示与不喜欢的人跳舞.对于第$i$个人,连一条从$a_i$到$ ...
- BZOJ3518 : 点组计数
若直线的斜率为0或者不存在斜率,则有$nC(m,3)+mC(n,3)$种方案.若直线的斜率不为0,只需考虑斜率为正的情况,最后答案再乘以2即可.枚举两个点的坐标差,设$t=\min(n,m)$,则有: ...
- Golang Vendor 包管理工具 glide 使用教程
Glide 是 Golang 的 Vendor 包管理器,方便你管理 vendor 和 verdor 包.类似 Java 的 Maven,PHP 的 Composer. Github:https:// ...
- latex编写论文
写给像我这样需要使用latex编写论文的小菜鸟,给出demo和注释,高级部分自己参透(默认你已经搭好环境). 1.搭论文架子 demo1 \documentclass[10pt,a4paper]{ar ...
- Revit API得到类别Category设置类别可见性
start [Transaction(TransactionMode.Manual)] [Regeneration(RegenerationOption.Manual)] public class c ...
- 移植Python2到TQ2440
环境 Python:2.7.13 开发板: TQ2440 工具链: arm-none-linux-gnueabi-gcc 4.8.3 概述 前面已经把Python3移植到TQ2440上面的,现在我们移 ...