SQLSERVER排查CPU占用高的情况
2015-10-26 14:59
621 查看
--查询CPU耗时最多的50个查询
SELECT TOP 50 total_worker_time/execution_count/1000/1000 AS [CPU平均执行(秒)],
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) N'执行语句'
,st.text N'完整语句'
,total_worker_time/1000/1000 AS [总消耗CPU 时间(秒)]
,execution_count [运行次数]
,qs.total_worker_time/qs.execution_count/1000/1000 AS [平均执行CPU 时间(秒)]
,last_execution_time AS [最后一次执行时间]
,max_worker_time /1000/1000 AS [最大执行时间(秒)]
,total_physical_reads N'物理读取总次数'
,total_logical_reads/execution_count N'每次逻辑读次数'
,total_logical_reads N'逻辑读取总次数'
,total_logical_writes N'逻辑写入总次数'
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
WHERE last_execution_time>'2015-10-26 14:25:00'
ORDER BY total_worker_time/execution_count DESC;
--查询当前阻塞的请求
SELECT session_id ,status ,blocking_session_id
,wait_type ,wait_time ,wait_resource
,transaction_id
,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_requests qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
WHERE status = N'suspended';
SELECT TOP 50 total_worker_time/execution_count/1000/1000 AS [CPU平均执行(秒)],
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) N'执行语句'
,st.text N'完整语句'
,total_worker_time/1000/1000 AS [总消耗CPU 时间(秒)]
,execution_count [运行次数]
,qs.total_worker_time/qs.execution_count/1000/1000 AS [平均执行CPU 时间(秒)]
,last_execution_time AS [最后一次执行时间]
,max_worker_time /1000/1000 AS [最大执行时间(秒)]
,total_physical_reads N'物理读取总次数'
,total_logical_reads/execution_count N'每次逻辑读次数'
,total_logical_reads N'逻辑读取总次数'
,total_logical_writes N'逻辑写入总次数'
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
WHERE last_execution_time>'2015-10-26 14:25:00'
ORDER BY total_worker_time/execution_count DESC;
--查询当前阻塞的请求
SELECT session_id ,status ,blocking_session_id
,wait_type ,wait_time ,wait_resource
,transaction_id
,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_requests qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
WHERE status = N'suspended';
相关文章推荐
- rank
- SQL RDBMS
- 搭建高可用mongodb集群(五)--集群搭建的三种方式
- Oracle 11gR2 RAC修改监听默认端口
- within group
- sql server 类oracle vm_contact() 函数创建
- List of SQL commands
- mysql出现Waiting for table metadata lock的原因及解决方案
- (转)oracle 启动监听 报“监听程序不支持服务” 解决
- lncRNA数据库和miRNA数据库
- JDBC 1 利用Statement对数据库进行增删改查
- TERADATA数据库操作
- JDBC 3 通过PreparedStatement 对数据库进行增删改查
- mysql免密码登录
- redis
- oracle url encode decode
- 数据库触发器DB2和SQL Server的异同
- oracle导出sql
- Mysql自增id重新从1排序
- 5.数据库