Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdAdam Vermeiren Laatst gewijzigd meer dan 10 jaar geleden
1
Waitstats 2005/2008 21 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 r.bijl@xmsnet.nl http://axeprofit.blogspot.com
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 / 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 • )
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?
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.