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)



