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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| WITH T_WAITS
AS (
SELECT wait_type,
wait_time_ms / 1000.0 AS wait_time_seconds,
(wait_time_ms - signal_wait_time_ms) / 1000.0 AS resource_seconds,
signal_wait_time_ms / 1000.0 AS signal_seconds,
waiting_tasks_count AS wait_count,
100.0 * wait_time_ms / SUM (wait_time_ms) OVER() AS Percentage,
ROW_NUMBER() OVER(ORDER BY wait_time_ms DESC) AS row_num
FROM sys.dm_os_wait_stats
WHERE wait_type NOT IN (
N'BROKER_EVENTHANDLER', N'BROKER_RECEIVE_WAITFOR',
N'BROKER_TASK_STOP', N'BROKER_TO_FLUSH',
N'BROKER_TRANSMITTER', N'CHECKPOINT_QUEUE',
N'CHKPT', N'CLR_AUTO_EVENT',
N'CLR_MANUAL_EVENT', N'CLR_SEMAPHORE',
N'DBMIRROR_DBM_EVENT', N'DBMIRROR_EVENTS_QUEUE',
N'DBMIRROR_WORKER_QUEUE', N'DBMIRRORING_CMD',
N'DIRTY_PAGE_POLL', N'DISPATCHER_QUEUE_SEMAPHORE',
N'EXECSYNC', N'FSAGENT',
N'FT_IFTS_SCHEDULER_IDLE_WAIT', N'FT_IFTSHC_MUTEX',
N'HADR_CLUSAPI_CALL', N'HADR_FILESTREAM_IOMGR_IOCOMPLETION',
N'HADR_LOGCAPTURE_WAIT', N'HADR_NOTIFICATION_DEQUEUE',
N'HADR_TIMER_TASK', N'HADR_WORK_QUEUE',
N'KSOURCE_WAKEUP', N'LAZYWRITER_SLEEP',
N'LOGMGR_QUEUE', N'ONDEMAND_TASK_QUEUE',
N'PWAIT_ALL_COMPONENTS_INITIALIZED',
N'QDS_PERSIST_TASK_MAIN_LOOP_SLEEP',
N'QDS_SHUTDOWN_QUEUE',
N'QDS_CLEANUP_STALE_QUERIES_TASK_MAIN_LOOP_SLEEP',
N'REQUEST_FOR_DEADLOCK_SEARCH', N'RESOURCE_QUEUE',
N'SERVER_IDLE_CHECK', N'SLEEP_BPOOL_FLUSH',
N'SLEEP_DBSTARTUP', N'SLEEP_DCOMSTARTUP',
N'SLEEP_MASTERDBREADY', N'SLEEP_MASTERMDREADY',
N'SLEEP_MASTERUPGRADED', N'SLEEP_MSDBSTARTUP',
N'SLEEP_SYSTEMTASK', N'SLEEP_TASK',
N'SLEEP_TEMPDBSTARTUP', N'SNI_HTTP_ACCEPT',
N'SP_SERVER_DIAGNOSTICS_SLEEP', N'SQLTRACE_BUFFER_FLUSH',
N'SQLTRACE_INCREMENTAL_FLUSH_SLEEP',
N'SQLTRACE_WAIT_ENTRIES', N'WAIT_FOR_RESULTS',
N'WAITFOR', N'WAITFOR_TASKSHUTDOWN',
N'WAIT_XTP_HOST_WAIT', N'WAIT_XTP_OFFLINE_CKPT_NEW_LOG',
N'WAIT_XTP_CKPT_CLOSE', N'XE_DISPATCHER_JOIN',
N'XE_DISPATCHER_WAIT', N'XE_TIMER_EVENT')
AND waiting_tasks_count > 0
)
SELECT MAX (W1.wait_type) AS WaitType,
CAST (MAX (W1.wait_time_seconds) AS DECIMAL (16,2)) AS wait_time_seconds,
CAST (MAX (W1.resource_seconds) AS DECIMAL (16,2)) AS resource_seconds,
CAST (MAX (W1.signal_seconds) AS DECIMAL (16,2)) AS signal_seconds,
MAX (W1.wait_count) AS wait_count,
CAST (MAX (W1.Percentage) AS DECIMAL (5,2)) AS Percentage,
CAST ((MAX (W1.wait_time_seconds) / MAX (W1.wait_count)) AS DECIMAL (16,4)) AS average_wait_time_seconds,
CAST ((MAX (W1.resource_seconds) / MAX (W1.wait_count)) AS DECIMAL (16,4)) AS average_resource_seconds,
CAST ((MAX (W1.signal_seconds) / MAX (W1.wait_count)) AS DECIMAL (16,4)) AS average_signal_seconds
FROM T_WAITS AS W1
INNER JOIN T_WAITS AS W2
ON W2.row_num <= W1.row_num
GROUP BY W1.row_num
HAVING SUM (W2.Percentage) - MAX (W1.Percentage) < 95; |
Partager