Situatie
Mai jos este un script ce returneaza toate evenimentele de tip wait de pe un server Microsoft SQL. Poate fi folosit pentru a avea o imagine despre ceea ce se ruleaza si cum afecteaza serverul.
Solutie
with waits as (select wait_type, wait_time_ms / 1000.0 as waits, (wait_time_ms - signal_wait_time_ms) / 1000.0 as resources, signal_wait_time_ms / 1000.0 as signals, waiting_tasks_count as waitcount, 100.0 * wait_time_ms / sum (wait_time_ms) over() as percentage, row_number() over(order by wait_time_ms desc) as rownum from sys.dm_os_wait_stats where wait_type not in ( N'CLR_SEMAPHORE', N'LAZYWRITER_SLEEP', N'RESOURCE_QUEUE', N'SQLTRACE_BUFFER_FLUSH', N'SLEEP_TASK', N'SLEEP_SYSTEMTASK', N'WAITFOR', N'HADR_FILESTREAM_IOMGR_IOCOMPLETION', N'CHECKPOINT_QUEUE', N'REQUEST_FOR_DEADLOCK_SEARCH', N'XE_TIMER_EVENT', N'XE_DISPATCHER_JOIN', N'LOGMGR_QUEUE', N'FT_IFTS_SCHEDULER_IDLE_WAIT', N'BROKER_TASK_STOP', N'CLR_MANUAL_EVENT', N'CLR_AUTO_EVENT', N'DISPATCHER_QUEUE_SEMAPHORE', N'TRACEWRITE', N'XE_DISPATCHER_WAIT', N'BROKER_TO_FLUSH', N'BROKER_EVENTHANDLER', N'FT_IFTSHC_MUTEX', N'SQLTRACE_INCREMENTAL_FLUSH_SLEEP', N'DIRTY_PAGE_POLL', N'SP_SERVER_DIAGNOSTICS_SLEEP') ) select w1.wait_type as waittype, cast (w1.waits as decimal(14, 2)) wait_s, cast (w1.resources as decimal(14, 2)) resource_s, cast (w1.signals as decimal(14, 2)) signal_s, w1.waitcount wait_count, cast (w1.percentage as decimal(4, 2)) percentage, cast ((w1.waits / w1.waitcount) as decimal (14, 4)) avgWait_s, cast ((w1.resources / w1.waitcount) as decimal (14, 4)) avgResource_s, cast ((w1.signals / w1.waitcount) as decimal (14, 4)) avgSignal_s from waits as w1 inner join waits as w2 on w2.rownum <= w1.rownum group by w1.rownum, w1.wait_type, w1.waits, w1.resources, w1.signals, w1.waitcount, w1.percentage having sum (w2.percentage) - w1.percentage < 90;
Leave A Comment?