De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

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

Verwante presentaties


Presentatie over: "Waitstats 2005/2008 21 april 2012. Wat gaan we doen? • Even voorstellen • Performance problemen • Een veel gebruikte aanvliegroute • Wat zijn waitstats."— Transcript van de presentatie:

1 Waitstats 2005/ april 2012

2 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

3 Even voorstellen Ronald Bijl Werkzaam met SQL Server vanaf versie 6.0 Beheer Ontwikkeling BI analyse/ontwerp/bouw SQL Server Docent

4 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

5 Een veel gebruikte aanvliegroute • Perfmon PLE Buffer cache hit ratio Disk latency (avg disk queue length) Page faults Total memory vs Target memory Full scans/sec • Resource monitor • Profiler – ProfilerTSql duration – TSQL SPs

6 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

7 Execution model (1)

8 Execution model (2)

9 Execution model (3)

10 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

11 Hoe lang duurt een query? Query execution time = Query Wait Time + Query Signal Time + CPU Time

12 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

13 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): 1.Clear waitstats (DBCC SQLPERF ('sys.dm_os_wait_stats', CLEAR)) 2.Insert de waitstats frequent (bijvoorbeeld iedere minuut) in een usertable 3.Interpreteer na enige tijd de waitstats

14 Hoe de waitstats DMV uit te vragen • WITH Waits AS • ( • SELECT • wait_type, • wait_time_ms / 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 • )

15 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

16 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

17 Demo

18 Questions?


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

Verwante presentaties


Ads door Google