性能诊断

SELECT TOP 10
[Wait type] = wait_type,
[Wait time (s)] = wait_time_ms / 1000,
[% waiting] = CONVERT(DECIMAL(12,2), wait_time_ms * 100.0
/ SUM(wait_time_ms) OVER())
FROM sys.dm_os_wait_stats
WHERE wait_type NOT LIKE '%SLEEP%'
ORDER BY wait_time_ms DESC;




--查询耗时CPU
SELECT TOP 100
[Average CPU used] = total_worker_time / qs.execution_count
,
[Total CPU used] = total_worker_time
,
[Execution count] = qs.execution_count
,
[Individual Query] = SUBSTRING (qt.text,qs.statement_start_offset/2,
(
CASE WHEN qs.statement_end_offset = -1
THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2
ELSE qs.statement_end_offset END -
qs.statement_start_offset)
/2)
,
[Parent Query] = qt.text
,DatabaseName
= DB_NAME(qt.dbid)
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt
ORDER BY [Average CPU used] DESC;


--查询耗时IO
SELECT TOP 100
[Average IO] = (total_logical_reads + total_logical_writes) / qs.execution_count
,
[Total IO] = (total_logical_reads + total_logical_writes)
,
[Execution count] = qs.execution_count
,
[Individual Query] = SUBSTRING (qt.text,qs.statement_start_offset/2,
(
CASE WHEN qs.statement_end_offset = -1
THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2
ELSE qs.statement_end_offset END - qs.statement_start_offset)/2)
,
[Parent Query] = qt.text
,DatabaseName
= DB_NAME(qt.dbid)
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt
ORDER BY [Average IO] DESC;

原文地址:https://www.cnblogs.com/qanholas/p/2131149.html