WAITs no SQL Server

Fiquei muito satisfeito em ver que o SQL Server agora possui instrumentação com visualização em formato de WAIT EVENTs.

Elas já estavam disponíveis em versões anteriores, e a próxima versão, de codinome Denali, já possui 562 WAITs intrumentalizadas, pelo menos em minha instalação de testes. É muito menos do que as >1.100 do Oracle 11gR2, mas é um passo na direção certa, que é o fim do Tuning por Checklist no SQL Server.

A DMV dm_os_wait_stats (onde creio que OS significa o SQL Server OS, e não o Windows OS) permite uma visualização rápida dos maiores gargalos do sistema, e o SQL Server conta com um procedure para limpar seu conteúdo, o que é excelente para uma análise comparativa.

A documentação sobre cada WAIT está disponível no Technet, mas é necessário conhecimento do SQL Server Internals para interpreta-las.

Documentação de WAITs do SQL Server 2008 R2

SELECT * FROM sys.dm_os_wait_stats WHERE wait_time_ms > 0 ORDER BY wait_time_ms DESC
GO

wait_type                                                    waiting_tasks_count  wait_time_ms         max_wait_time_ms     signal_wait_time_ms
------------------------------------------------------------ -------------------- -------------------- -------------------- --------------------
FT_IFTS_SCHEDULER_IDLE_WAIT                                  348                  27569904             600001               27
LAZYWRITER_SLEEP                                             9974                 9987593              1199                 7493
REQUEST_FOR_DEADLOCK_SEARCH                                  1998                 9986710              5064                 9986710
SQLTRACE_INCREMENTAL_FLUSH_SLEEP                             2497                 9986594              4097                 23
HADR_FILESTREAM_IOMGR_IOCOMPLETION                           19910                9984593              1384                 10812
XE_TIMER_EVENT                                               500                  9961136              30061                9960383
SLEEP_TASK                                                   19093                5067603              1186                 5709
BROKER_TO_FLUSH                                              4869                 4993496              1276                 3607
LOGMGR_QUEUE                                                 136                  1434576              485845               36
CHECKPOINT_QUEUE                                             11                   1364931              486916               84
FT_IFTSHC_MUTEX                                              6                    970158               958726               13
BROKER_TASK_STOP                                             13                   111854               10073                22
CLR_AUTO_EVENT                                               8                    18141                5958                 7
LCK_M_S                                                      7                    15106                2912                 86
PAGEIOLATCH_SH                                               638                  8479                 161                  147
PREEMPTIVE_OS_LIBRARYOPS                                     1                    3212                 3212                 0
BROKER_EVENTHANDLER                                          8                    2135                 1678                 42
PREEMPTIVE_OS_CREATEFILE                                     104                  1986                 340                  0
PREEMPTIVE_OS_COMOPS                                         1                    1826                 1826                 0
SLEEP_DBSTARTUP                                              16                   1740                 193                  156
ASYNC_NETWORK_IO                                             234                  1712                 319                  427
PREEMPTIVE_OS_WAITFORSINGLEOBJECT                            25                   1693                 319                  0
IO_COMPLETION                                                164                  1657                 126                  171
PREEMPTIVE_OS_GENERICOPS                                     31                   1650                 719                  0
MSQL_XP                                                      195                  1242                 621                  0
FT_IFTS_RWLOCK                                               11                   1150                 941                  16
PREEMPTIVE_OS_FILEOPS                                        141                  1054                 144                  0
PREEMPTIVE_OS_CRYPTOPS                                       210                  919                  525                  0
WRITELOG                                                     170                  774                  27                   45
PREEMPTIVE_OS_GETPROCADDRESS                                 195                  693                  118                  0
PWAIT_ALL_COMPONENTS_INITIALIZED                             3                    669                  249                  30
SLEEP_TEMPDBSTARTUP                                          6                    658                  229                  18
PREEMPTIVE_OS_FLUSHFILEBUFFERS                               10                   608                  141                  0
SLEEP_SYSTEMTASK                                             1                    566                  566                  63
CHKPT                                                        1                    544                  544                  56
SLEEP_MASTERMDREADY                                          1                    544                  544                  60
WRITE_COMPLETION                                             105                  484                  87                   0
ASYNC_IO_COMPLETION                                          4                    462                  191                  1
LCK_M_U                                                      3                    453                  236                  3
SOS_SCHEDULER_YIELD                                          4266                 436                  171                  415
PAGEIOLATCH_EX                                               42                   434                  86                   0
PAGEIOLATCH_UP                                               77                   333                  84                   0
PREEMPTIVE_OS_DISCONNECTNAMEDPIPE                            206                  315                  99                   0
PREEMPTIVE_OS_GETFILEATTRIBUTES                              64                   297                  61                   0
SLEEP_DCOMSTARTUP                                            1                    287                  287                  0
PREEMPTIVE_OS_NETVALIDATEPASSWORDPOLICY                      208                  282                  106                  0
PREEMPTIVE_OS_AUTHENTICATIONOPS                              663                  253                  24                   0
PREEMPTIVE_OS_QUERYREGISTRY                                  166                  240                  119                  0
PREEMPTIVE_OS_LOADLIBRARY                                    1                    234                  234                  0
PREEMPTIVE_OS_PIPEOPS                                        1                    216                  216                  0
PREEMPTIVE_OS_WRITEFILEGATHER                                12                   213                  73                   0
THREADPOOL                                                   24                   174                  36                   0
PREEMPTIVE_OS_CRYPTACQUIRECONTEXT                            235                  157                  30                   0
DAC_INIT                                                     1                    146                  146                  0
PREEMPTIVE_OS_DELETESECURITYCONTEXT                          206                  117                  17                   0
LCK_M_SCH_M                                                  3                    81                   59                   8
SLEEP_BPOOL_FLUSH                                            93                   72                   6                    0
PREEMPTIVE_FILESIZEGET                                       18                   44                   43                   0
PREEMPTIVE_OS_CRYPTIMPORTKEY                                 230                  41                   11                   0
PREEMPTIVE_OS_LOOKUPACCOUNTSID                               6                    35                   21                   0
PREEMPTIVE_OS_AUTHORIZATIONOPS                               264                  33                   14                   0
PREEMPTIVE_OS_DOMAINSERVICESOPS                              1                    31                   31                   0
CLR_MANUAL_EVENT                                             1                    30                   30                   0
PREEMPTIVE_OS_REPORTEVENT                                    40                   27                   3                    0
LOGBUFFER                                                    1                    27                   27                   0
SOS_PHYS_PAGE_CACHE                                          1                    20                   20                   15
PREEMPTIVE_OS_NETVALIDATEPASSWORDPOLICYFREE                  208                  14                   8                    0
PREEMPTIVE_OS_DECRYPTMESSAGE                                 208                  6                    1                    0
PAGELATCH_EX                                                 138                  5                    0                    2
PAGELATCH_SH                                                 103                  3                    0                    2
SNI_TASK_COMPLETION                                          1                    2                    2                    0
PREEMPTIVE_OS_GETVOLUMENAMEFORVOLUMEMOUNTPOINT               4                    2                    0                    0
PREEMPTIVE_OS_SQMLAUNCH                                      1                    2                    2                    0
SQLTRACE_FILE_WRITE_IO_COMPLETION                            2                    1                    0                    0
PREEMPTIVE_OS_DELETEFILE                                     1                    1                    1                    0
PREEMPTIVE_OS_GETDISKFREESPACE                               4                    1                    0                    0
LATCH_SH                                                     1                    1                    1                    1
SOS_SYNC_TASK_ENQUEUE_EVENT                                  1                    1                    1                    1
BROKER_MASTERSTART                                           1                    1                    1                    0
(79 row(s) affected)
DBCC SQLPERF ('sys.dm_os_wait_stats', CLEAR);
GO

DBCC execution completed. If DBCC printed error messages, contact your system administrator.
SELECT * FROM sys.dm_os_wait_stats WHERE wait_time_ms > 0 ORDER BY wait_time_ms DESC
GO

wait_type                                                    waiting_tasks_count  wait_time_ms         max_wait_time_ms     signal_wait_time_ms
------------------------------------------------------------ -------------------- -------------------- -------------------- --------------------
(0 row(s) affected)

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.