Waitstats 2005/2008 21 april 2012. Wat gaan we doen? • Even voorstellen • Performance problemen...

18
Waitstats 2005/2008 21 april 2012

Transcript of Waitstats 2005/2008 21 april 2012. Wat gaan we doen? • Even voorstellen • Performance problemen...

Page 1: Waitstats 2005/2008 21 april 2012. Wat gaan we doen? • Even voorstellen • Performance problemen • Een veel gebruikte aanvliegroute • Wat zijn waitstats.

Waitstats 2005/200821 april 2012

Page 2: Waitstats 2005/2008 21 april 2012. Wat gaan we doen? • Even voorstellen • Performance problemen • Een veel gebruikte aanvliegroute • Wat zijn waitstats.

Wat gaan we doen?

• Even voorstellen• Performance problemen• Een veel gebruikte aanvliegroute• Wat zijn waitstats• Execution model• De DMV’s• Hoe lang duurt een query• Waar zijn de stats te vinden• Indien een performance probleem zich aandoet• Hoe de waitstats DMV uit te vragen• Veel voorkomende waittypes• Demo• Ask

Page 3: Waitstats 2005/2008 21 april 2012. Wat gaan we doen? • Even voorstellen • Performance problemen • Een veel gebruikte aanvliegroute • Wat zijn waitstats.

Even voorstellen

Ronald Bijl

Werkzaam met SQL Server vanaf versie 6.0

BeheerOntwikkelingBI analyse/ontwerp/bouwSQL Server Docent

[email protected]://axeprofit.blogspot.com

Page 4: Waitstats 2005/2008 21 april 2012. Wat gaan we doen? • Even voorstellen • Performance problemen • Een veel gebruikte aanvliegroute • Wat zijn waitstats.

Performance problemen

Enige oorzaken van performance problemen

• Hardware voldoet (niet) meer• Netwerk• Verkeerde configuratie SQL Server• Verkeerde configuratie Windows Server• Code ontwikkeld op kleine datasets• Inefficiente code

Page 5: Waitstats 2005/2008 21 april 2012. Wat gaan we doen? • Even voorstellen • Performance problemen • Een veel gebruikte aanvliegroute • Wat zijn waitstats.

Een veel gebruikte aanvliegroute

• PerfmonPLEBuffer cache hit ratioDisk latency (avg disk queue length)Page faultsTotal memory vs Target memoryFull scans/sec

• Resource monitor

• Profiler– ProfilerTSql duration– TSQL SPs

Page 6: Waitstats 2005/2008 21 april 2012. Wat gaan we doen? • Even voorstellen • Performance problemen • Een veel gebruikte aanvliegroute • Wat zijn waitstats.

Wat zijn waitstats

• “Statistieken” die worden bijgehouden• hoe lang processen (queries) binnen SQL Server moeten wachten om de

verschillende fasen binnen het executie model te doorlopen• per wait type• cumulatief

Page 7: Waitstats 2005/2008 21 april 2012. Wat gaan we doen? • Even voorstellen • Performance problemen • Een veel gebruikte aanvliegroute • Wat zijn waitstats.

Execution model (1)

Page 8: Waitstats 2005/2008 21 april 2012. Wat gaan we doen? • Even voorstellen • Performance problemen • Een veel gebruikte aanvliegroute • Wat zijn waitstats.

Execution model (2)

Page 9: Waitstats 2005/2008 21 april 2012. Wat gaan we doen? • Even voorstellen • Performance problemen • Een veel gebruikte aanvliegroute • Wat zijn waitstats.

Execution model (3)

Page 10: Waitstats 2005/2008 21 april 2012. Wat gaan we doen? • Even voorstellen • Performance problemen • Een veel gebruikte aanvliegroute • Wat zijn waitstats.

De DMV’s

• Running list (cpu time)– -> sys.dm_exec_requests (where status = ‘running’)

query(s) welke word(en) uitgevoerd (CPU execution)

• Runnable queue (signal wait time (< 25%))– -> sys.dm_exec_requests (where status = ‘runnable’)

query(s) die uitgevoerd kunnen worden maar wachten op CPU-tijd

• Waiter list (query wait time)– -> sys.dm_os_waiting_tasks

query(s) die wachten op een resource

Page 11: Waitstats 2005/2008 21 april 2012. Wat gaan we doen? • Even voorstellen • Performance problemen • Een veel gebruikte aanvliegroute • Wat zijn waitstats.

Hoe lang duurt een query?

Query execution time = Query Wait Time + Query Signal Time + CPU Time

Page 12: Waitstats 2005/2008 21 april 2012. Wat gaan we doen? • Even voorstellen • Performance problemen • Een veel gebruikte aanvliegroute • Wat zijn waitstats.

Waar zijn de stats te vinden

• DMV:

SYS.DM_OS_WAIT_STATS

• Er zijn geen standaard reports voor aanwezig in de management studio

• Omdat ze cumulatief zijn: delta’s berekenen en interpreteren

Page 13: Waitstats 2005/2008 21 april 2012. Wat gaan we doen? • Even voorstellen • Performance problemen • Een veel gebruikte aanvliegroute • Wat zijn waitstats.

Indien een performance probleem zich voordoet

Kan de situatie gereproduceerd en geisoleerd worden (test-instance)1. Clear waitstats (DBCC SQLPERF ('sys.dm_os_wait_stats', CLEAR))2. Draai de vertragende processen (indien bekend)3. Interpreteer de waitstats

Indien dit niet mogelijk is (zeer waarschijnlijk):4. Clear waitstats (DBCC SQLPERF ('sys.dm_os_wait_stats', CLEAR))5. Insert de waitstats frequent (bijvoorbeeld iedere minuut) in een usertable6. Interpreteer na enige tijd de waitstats

Page 14: Waitstats 2005/2008 21 april 2012. Wat gaan we doen? • Even voorstellen • Performance problemen • Een veel gebruikte aanvliegroute • Wat zijn waitstats.

Hoe de waitstats DMV uit te vragen• WITH Waits AS • ( • SELECT • wait_type, • wait_time_ms / 1000. AS wait_time_s, • 100. * wait_time_ms / SUM(wait_time_ms) OVER() AS pct, • ROW_NUMBER() OVER(ORDER BY wait_time_ms DESC) AS rn • FROM sys.dm_os_wait_stats recompile• WHERE wait_type • NOT IN • ('BROKER_TASK_STOP','Total','SLEEP','BROKER_EVENTHANDLER', 'BROKER_RECEIVE_WAITFOR', 'BROKER_TRANSMITTER',• 'CHECKPOINT_QUEUE','CHKPT','CLR_AUTO_EVENT','CLR_MANUAL_EVENT','KSOURCE_WAKEUP','LAZYWRITER_SLEEP', • 'LOGMGR_QUEUE','ONDEMAND_TASK_QUEUE','REQUEST_FOR_DEADLOCK_SEARCH','RESOURCE_QUEUE','SERVER_IDLE_CHECK',• 'SLEEP_BPOOL_FLUSH','SLEEP_DBSTARTUP','SLEEP_DCOMSTARTUP','SLEEP_MSDBSTARTUP','SLEEP_SYSTEMTASK',• 'SLEEP_TASK', 'SLEEP_TEMPDBSTARTUP','SNI_HTTP_ACCEPT','SQLTRACE_BUFFER_FLUSH','TRACEWRITE',• 'WAIT_FOR_RESULTS','WAITFOR_TASKSHUTDOWN','XE_DISPATCHER_WAIT','XE_TIMER_EVENT','WAITFOR',• 'CLR_SEMAPHORE','BROKER_TO_FLUSH', 'DISPATCHER_QUEUE_SEMAPHORE','FT_IFTS_SCHEDULER_IDLE_WAIT', • 'FT_IFTSHC_MUTEX', 'XE_DISPATCHER_JOIN', 'SQLTRACE_INCREMENTAL_FLUSH_SLEEP') -- filter out additional irrelevant waits • )

Page 15: Waitstats 2005/2008 21 april 2012. Wat gaan we doen? • Even voorstellen • Performance problemen • Een veel gebruikte aanvliegroute • Wat zijn waitstats.

SELECT convert(varchar(40),W1.wait_type) wait_type, CAST(W1.wait_time_s AS DECIMAL(12, 2)) AS wait_time_s,

CAST(W1.pct AS DECIMAL(12, 2)) AS pct, CAST(SUM(W2.pct) AS DECIMAL(12, 2)) AS running_pct

FROM Waits AS W1 INNER JOIN Waits AS W2 ON W2.rn <= W1.rn

GROUP BY W1.rn, W1.wait_type, W1.wait_time_s, W1.pct

HAVING SUM(W2.pct) - W1.pct < 95

Page 16: Waitstats 2005/2008 21 april 2012. Wat gaan we doen? • Even voorstellen • Performance problemen • Een veel gebruikte aanvliegroute • Wat zijn waitstats.

Veel voorkomende wait types• ASYNC_IO_COMPLETION

– Wachten op IO• ASYNC_NETWORK_IO

– Vertraging in netwerk of in verwerking aanroepende applicatie• CXPACKET

– Parallelle processor afhandelingen• PAGEIOLATCH_EX

– Exclusive latches (kan niet locken in memory (buffer) door vertraagde IO)• PAGEIOLATCH_SH

– Shared latches (kan niet locken in memory (buffer) door vertraagde IO)• SOS_SCHEDULER_YIELD

– Executing task staat zijn plek af -> onderaan in de runnable queue (non-preemptive (cooperative))• Resource_Semaphore

– Memory pressure• BackupIO of BackupBuffer

– Backup loopt vertraging op, mogelijk door langzame backupmedia• WRITELOG

– Logflush na een commit of een checkpoint

Page 17: Waitstats 2005/2008 21 april 2012. Wat gaan we doen? • Even voorstellen • Performance problemen • Een veel gebruikte aanvliegroute • Wat zijn waitstats.

Demo

Page 18: Waitstats 2005/2008 21 april 2012. Wat gaan we doen? • Even voorstellen • Performance problemen • Een veel gebruikte aanvliegroute • Wat zijn waitstats.

Questions?