{"id":641,"date":"2010-12-09T15:18:00","date_gmt":"2010-12-09T15:18:00","guid":{"rendered":"\/blogs\/paul\/post\/Wait-statistics-or-please-tell-me-where-it-hurts.aspx"},"modified":"2026-03-21T19:04:30","modified_gmt":"2026-03-22T02:04:30","slug":"wait-statistics-or-please-tell-me-where-it-hurts","status":"publish","type":"post","link":"https:\/\/www.sqlskills.com\/blogs\/paul\/wait-statistics-or-please-tell-me-where-it-hurts\/","title":{"rendered":"SQL Server Wait Statistics (or please tell me where it hurts&#8230;)"},"content":{"rendered":"<p style=\"text-align: justify;\">(Check out my <a href=\"https:\/\/www.sqlskills.com\/help\/waits\/\" target=\"_blank\" rel=\"noopener noreferrer\">comprehensive library of all wait types and latch classes<\/a>.)<\/p>\n<p style=\"text-align: justify;\">[Last updated: March 21, 2026]<\/p>\n<p style=\"text-align: justify;\">How many times have you walked up to a SQL Server that has a performance problem and wondered where to start looking?<\/p>\n<p style=\"text-align: justify;\">One of the most under-utilized performance troubleshooting methodologies in the SQL Server world\u00a0is one called &#8220;waits and queues&#8221; (also known as &#8220;SQL Server wait statistics&#8221; or simply &#8220;wait stats&#8221;). The basic premise is that SQL Server is permanently tracking why execution threads have to wait. You can ask SQL Server for this information and then use the results to narrow down where to start digging to unearth the cause of performance issues. The &#8220;waits&#8221; are what SQL Server tracks. The &#8220;queues&#8221; are the resources that the threads are waiting for. There are a myriad of waits in the system and they all indicate different resources being waited for. For example, a <em><a href=\"http:\/\/www.sqlskills.com\/help\/waits\/pageiolatch_ex\/\" target=\"_blank\" rel=\"noopener noreferrer\">PAGEIOLATCH_EX<\/a><\/em> wait\u00a0means a thread is waiting for a data page to be read into the buffer pool from disk. An\u00a0<em><a href=\"http:\/\/www.sqlskills.com\/help\/waits\/lck_m_x\/\" target=\"_blank\" rel=\"noopener noreferrer\">LCK_M_X<\/a><\/em> wait means a thread is waiting to be granted an exclusive lock on something.<\/p>\n<p style=\"text-align: justify;\">The great thing about all of this is the SQL Server *knows* where the performance issues are, and you just need to ask it&#8230;. and then interpret what it tells you, which can be a little tricky.<\/p>\n<p style=\"text-align: justify;\">Now &#8211; where people sometimes get hung up is trying to track down every last wait and figure out what&#8217;s causing it. Waits *always* occur. It&#8217;s the way SQL Server&#8217;s scheduling system works.<\/p>\n<p style=\"text-align: justify;\">A thread is using the CPU (called RUNNING) until it needs to wait for a resource. It then moves to an unordered list of threads that are SUSPENDED. In the meantime, the next thread on the FIFO (first-in-first-out) queue of threads waiting for the CPU (called being RUNNABLE) is given the CPU and becomes RUNNING. If a thread on the SUSPENDED list is notified that it&#8217;s resource is available, it becomes RUNNABLE and is put on the bottom of the RUNNABLE queue. Threads continue this clockwise movement from RUNNING to SUSPENDED to RUNNABLE to RUNNING again until the task is completed. You can see processes in these states using the <em>sys.dm_exec_requests<\/em> DMV.<\/p>\n<p style=\"text-align: justify;\">SQL Server keeps track of the time that elapses between leaving the RUNNING state and becoming RUNNING again (called the &#8220;wait time&#8221;) and the time spent on the RUNNABLE queue (called the &#8220;signal wait time&#8221; &#8211; i.e. how long does the thread need to wait for the CPU after being signaled that its resource is available). We need to work out the time spent waiting on the SUSPENDED list (called the &#8220;resource wait time&#8221;) by subtracting the signal wait time from the overall wait time.<\/p>\n<p style=\"text-align: justify;\">A great resource is the whitepaper on wait statistics: <a style=\"color: #005187;\" href=\"https:\/\/www.sqlskills.com\/help\/sql-server-performance-tuning-using-wait-statistics\/\" target=\"_blank\" rel=\"noopener noreferrer\">SQL Server Performance Tuning Using Wait Statistics: A Beginners Guide<\/a>, which I encourage you to read. There&#8217;s also a much older whitepaper (<a href=\"http:\/\/download.microsoft.com\/download\/4\/7\/a\/47a548b9-249e-484c-abd7-29f31282b04d\/Performance_Tuning_Waits_Queues.doc\">Performance Tuning Using Waits and Queues<\/a>) which has a lot of useful information, but it&#8217;s pretty dated now. The best guide to what the various wait types (and latch classes) mean are\u00a0my comprehensive <a href=\"https:\/\/www.sqlskills.com\/help\/waits\/\" target=\"_blank\" rel=\"noopener noreferrer\">waits<\/a> and <a href=\"https:\/\/www.sqlskills.com\/help\/latches\/\" target=\"_blank\" rel=\"noopener noreferrer\">latches<\/a> libraries\u00a0and the\u00a0methodology of using and understanding wait statistics is described and demonstrated in my\u00a0<a href=\"https:\/\/www.pluralsight.com\/courses\/sqlserver-waits\" target=\"_blank\" rel=\"noopener noreferrer\">Pluralsight online training course<\/a>.<\/p>\n<p>You should also check out the following categories on my blog for more along these lines:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.sqlskills.com\/blogs\/paul\/category\/wait-stats\/\" target=\"_blank\" rel=\"noopener noreferrer\">Wait Stats<\/a>\n<ul>\n<li><a href=\"https:\/\/www.sqlskills.com\/blogs\/paul\/updated-sys-dm_os_waiting_tasks-script-to-correctly-parse-nodeid\/\" target=\"_blank\" rel=\"noopener noreferrer\">sys.dm_os_waiting_tasks script<\/a>\u00a0&#8211; what&#8217;s waiting right now?<\/li>\n<li><a href=\"https:\/\/www.sqlskills.com\/blogs\/paul\/advanced-performance-troubleshooting-waits-latches-spinlocks\/\" target=\"_blank\" rel=\"noopener noreferrer\">Advanced SQL Server performance tuning<\/a><\/li>\n<li><a href=\"https:\/\/www.sqlskills.com\/blogs\/paul\/capturing-wait-stats-for-a-single-operation\/\" target=\"_blank\" rel=\"noopener noreferrer\">Capturing wait stats for a single operation<\/a><\/li>\n<li><a href=\"https:\/\/www.sqlskills.com\/blogs\/paul\/worrying-wait-type\/\" target=\"_blank\" rel=\"noopener noreferrer\">What is the most worrying wait type?<\/a><\/li>\n<li><a href=\"https:\/\/www.sqlskills.com\/blogs\/paul\/determine-causes-particular-wait-type\/\" target=\"_blank\" rel=\"noopener noreferrer\">How to determine what causes a particular wait type<\/a><\/li>\n<li><a href=\"https:\/\/www.sqlskills.com\/blogs\/paul\/capturing-wait-statistics-period-time\/\" target=\"_blank\" rel=\"noopener noreferrer\">Capturing wait statistics for a period of time<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/www.sqlskills.com\/blogs\/paul\/category\/latches\/\" target=\"_blank\" rel=\"noopener noreferrer\">Latches<\/a>\u00a0(more advanced)<\/li>\n<li><a href=\"https:\/\/www.sqlskills.com\/blogs\/paul\/category\/spinlocks\/\" target=\"_blank\" rel=\"noopener noreferrer\">Spinlocks<\/a> (very advanced)<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">You can ask SQL Server for the cumulative wait statistics using the <em>sys.dm_os_wait_stats<\/em> DMV, and many people prefer to wrap the DMV call in some aggregation code. See below for the most recent version of my script, as of 2021, that works on all versions and includes wait types for SQL Server 2019.<\/p>\n<p style=\"text-align: justify;\">Note: This script does NOT work on Azure SQL Database &#8211; you need to replace <em>sys.dm_os_wait_stats<\/em> with <em>sys.dm_db_wait_stats<\/em> (for a script to use on Azure, see <a href=\"https:\/\/sqlperformance.com\/2016\/03\/sql-performance\/tuning-azure-sql-database\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a>).<\/p>\n<pre class=\"brush: sql; gutter: true; title: ; toolbar: true; wrap-lines: true; notranslate\" title=\"\">\r\n-- Last updated March 21, 2026\r\nWITH &#x5B;Waits] AS\r\n    (SELECT\r\n        &#x5B;wait_type],\r\n        &#x5B;wait_time_ms] \/ 1000.0 AS &#x5B;WaitS],\r\n        (&#x5B;wait_time_ms] - &#x5B;signal_wait_time_ms]) \/ 1000.0 AS &#x5B;ResourceS],\r\n        &#x5B;signal_wait_time_ms] \/ 1000.0 AS &#x5B;SignalS],\r\n        &#x5B;waiting_tasks_count] AS &#x5B;WaitCount],\r\n        100.0 * &#x5B;wait_time_ms] \/ SUM (&#x5B;wait_time_ms]) OVER() AS &#x5B;Percentage],\r\n        ROW_NUMBER() OVER(ORDER BY &#x5B;wait_time_ms] DESC) AS &#x5B;RowNum]\r\n    FROM sys.dm_os_wait_stats\r\n    WHERE &#x5B;wait_type] NOT IN (\r\n        -- These wait types are almost 100% never a problem and so they are\r\n        -- filtered out to avoid them skewing the results. Click on the URL\r\n        -- for more information.\r\n        N&#039;BROKER_EVENTHANDLER&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/BROKER_EVENTHANDLER\r\n        N&#039;BROKER_RECEIVE_WAITFOR&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/BROKER_RECEIVE_WAITFOR\r\n        N&#039;BROKER_TASK_STOP&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/BROKER_TASK_STOP\r\n        N&#039;BROKER_TO_FLUSH&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/BROKER_TO_FLUSH\r\n        N&#039;BROKER_TRANSMITTER&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/BROKER_TRANSMITTER\r\n        N&#039;CHECKPOINT_QUEUE&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/CHECKPOINT_QUEUE\r\n        N&#039;CHKPT&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/CHKPT\r\n        N&#039;CLR_AUTO_EVENT&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/CLR_AUTO_EVENT\r\n        N&#039;CLR_MANUAL_EVENT&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/CLR_MANUAL_EVENT\r\n        N&#039;CLR_SEMAPHORE&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/CLR_SEMAPHORE\r\n\r\n        -- Maybe comment this out if you have parallelism issues\r\n        N&#039;CXCONSUMER&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/CXCONSUMER\r\n\r\n        -- Maybe comment these four out if you have mirroring issues\r\n        N&#039;DBMIRROR_DBM_EVENT&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/DBMIRROR_DBM_EVENT\r\n        N&#039;DBMIRROR_EVENTS_QUEUE&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/DBMIRROR_EVENTS_QUEUE\r\n        N&#039;DBMIRROR_WORKER_QUEUE&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/DBMIRROR_WORKER_QUEUE\r\n        N&#039;DBMIRRORING_CMD&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/DBMIRRORING_CMD\r\n        N&#039;DIRTY_PAGE_POLL&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/DIRTY_PAGE_POLL\r\n        N&#039;DISPATCHER_QUEUE_SEMAPHORE&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/DISPATCHER_QUEUE_SEMAPHORE\r\n        N&#039;EXECSYNC&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/EXECSYNC\r\n        N&#039;FSAGENT&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/FSAGENT\r\n        N&#039;FT_IFTS_SCHEDULER_IDLE_WAIT&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/FT_IFTS_SCHEDULER_IDLE_WAIT\r\n        N&#039;FT_IFTSHC_MUTEX&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/FT_IFTSHC_MUTEX\r\n \r\n       -- Maybe comment these six out if you have AG issues\r\n        N&#039;HADR_CLUSAPI_CALL&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/HADR_CLUSAPI_CALL\r\n        N&#039;HADR_FILESTREAM_IOMGR_IOCOMPLETION&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/HADR_FILESTREAM_IOMGR_IOCOMPLETION\r\n        N&#039;HADR_LOGCAPTURE_WAIT&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/HADR_LOGCAPTURE_WAIT\r\n        N&#039;HADR_NOTIFICATION_DEQUEUE&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/HADR_NOTIFICATION_DEQUEUE\r\n        N&#039;HADR_TIMER_TASK&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/HADR_TIMER_TASK\r\n        N&#039;HADR_WORK_QUEUE&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/HADR_WORK_QUEUE\r\n\r\n        N&#039;KSOURCE_WAKEUP&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/KSOURCE_WAKEUP\r\n        N&#039;LAZYWRITER_SLEEP&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/LAZYWRITER_SLEEP\r\n        N&#039;LOGMGR_QUEUE&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/LOGMGR_QUEUE\r\n        N&#039;MEMORY_ALLOCATION_EXT&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/MEMORY_ALLOCATION_EXT\r\n        N&#039;ONDEMAND_TASK_QUEUE&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/ONDEMAND_TASK_QUEUE\r\n        N&#039;PARALLEL_REDO_DRAIN_WORKER&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/PARALLEL_REDO_DRAIN_WORKER\r\n        N&#039;PARALLEL_REDO_LOG_CACHE&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/PARALLEL_REDO_LOG_CACHE\r\n        N&#039;PARALLEL_REDO_TRAN_LIST&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/PARALLEL_REDO_TRAN_LIST\r\n        N&#039;PARALLEL_REDO_WORKER_SYNC&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/PARALLEL_REDO_WORKER_SYNC\r\n        N&#039;PARALLEL_REDO_WORKER_WAIT_WORK&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/PARALLEL_REDO_WORKER_WAIT_WORK\r\n        N&#039;PREEMPTIVE_OS_FLUSHFILEBUFFERS&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/PREEMPTIVE_OS_FLUSHFILEBUFFERS\r\n        N&#039;PREEMPTIVE_XE_GETTARGETSTATE&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/PREEMPTIVE_XE_GETTARGETSTATE\r\n        N&#039;PVS_PREALLOCATE&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/PVS_PREALLOCATE\r\n        N&#039;PWAIT_ALL_COMPONENTS_INITIALIZED&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/PWAIT_ALL_COMPONENTS_INITIALIZED\r\n        N&#039;PWAIT_DIRECTLOGCONSUMER_GETNEXT&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/PWAIT_DIRECTLOGCONSUMER_GETNEXT\r\n        N&#039;PWAIT_EXTENSIBILITY_CLEANUP_TASK&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/PWAIT_EXTENSIBILITY_CLEANUP_TASK\r\n        N&#039;QDS_PERSIST_TASK_MAIN_LOOP_SLEEP&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/QDS_PERSIST_TASK_MAIN_LOOP_SLEEP\r\n        N&#039;QDS_ASYNC_QUEUE&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/QDS_ASYNC_QUEUE\r\n        N&#039;QDS_CLEANUP_STALE_QUERIES_TASK_MAIN_LOOP_SLEEP&#039;,\r\n            -- https:\/\/www.sqlskills.com\/help\/waits\/QDS_CLEANUP_STALE_QUERIES_TASK_MAIN_LOOP_SLEEP\r\n        N&#039;QDS_SHUTDOWN_QUEUE&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/QDS_SHUTDOWN_QUEUE\r\n        N&#039;REDO_THREAD_PENDING_WORK&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/REDO_THREAD_PENDING_WORK\r\n        N&#039;REQUEST_FOR_DEADLOCK_SEARCH&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/REQUEST_FOR_DEADLOCK_SEARCH\r\n        N&#039;RESOURCE_QUEUE&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/RESOURCE_QUEUE\r\n        N&#039;SERVER_IDLE_CHECK&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/SERVER_IDLE_CHECK\r\n        N&#039;SLEEP_BPOOL_FLUSH&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/SLEEP_BPOOL_FLUSH\r\n        N&#039;SLEEP_DBSTARTUP&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/SLEEP_DBSTARTUP\r\n        N&#039;SLEEP_DCOMSTARTUP&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/SLEEP_DCOMSTARTUP\r\n        N&#039;SLEEP_MASTERDBREADY&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/SLEEP_MASTERDBREADY\r\n        N&#039;SLEEP_MASTERMDREADY&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/SLEEP_MASTERMDREADY\r\n        N&#039;SLEEP_MASTERUPGRADED&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/SLEEP_MASTERUPGRADED\r\n        N&#039;SLEEP_MSDBSTARTUP&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/SLEEP_MSDBSTARTUP\r\n        N&#039;SLEEP_SYSTEMTASK&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/SLEEP_SYSTEMTASK\r\n        N&#039;SLEEP_TASK&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/SLEEP_TASK\r\n        N&#039;SLEEP_TEMPDBSTARTUP&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/SLEEP_TEMPDBSTARTUP\r\n        N&#039;SNI_HTTP_ACCEPT&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/SNI_HTTP_ACCEPT\r\n        N&#039;SOS_WORK_DISPATCHER&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/SOS_WORK_DISPATCHER\r\n        N&#039;SP_SERVER_DIAGNOSTICS_SLEEP&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/SP_SERVER_DIAGNOSTICS_SLEEP\r\n        N&#039;SQLTRACE_BUFFER_FLUSH&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/SQLTRACE_BUFFER_FLUSH\r\n        N&#039;SQLTRACE_INCREMENTAL_FLUSH_SLEEP&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/SQLTRACE_INCREMENTAL_FLUSH_SLEEP\r\n        N&#039;SQLTRACE_WAIT_ENTRIES&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/SQLTRACE_WAIT_ENTRIES\r\n        N&#039;VDI_CLIENT_OTHER&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/VDI_CLIENT_OTHER\r\n        N&#039;WAIT_FOR_RESULTS&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/WAIT_FOR_RESULTS\r\n        N&#039;WAITFOR&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/WAITFOR\r\n        N&#039;WAITFOR_TASKSHUTDOWN&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/WAITFOR_TASKSHUTDOWN\r\n        N&#039;WAIT_XTP_RECOVERY&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/WAIT_XTP_RECOVERY\r\n        N&#039;WAIT_XTP_HOST_WAIT&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/WAIT_XTP_HOST_WAIT\r\n        N&#039;WAIT_XTP_OFFLINE_CKPT_NEW_LOG&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/WAIT_XTP_OFFLINE_CKPT_NEW_LOG\r\n        N&#039;WAIT_XTP_CKPT_CLOSE&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/WAIT_XTP_CKPT_CLOSE\r\n        N&#039;XE_DISPATCHER_JOIN&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/XE_DISPATCHER_JOIN\r\n        N&#039;XE_DISPATCHER_WAIT&#039;, -- https:\/\/www.sqlskills.com\/help\/waits\/XE_DISPATCHER_WAIT\r\n        N&#039;XE_TIMER_EVENT&#039; -- https:\/\/www.sqlskills.com\/help\/waits\/XE_TIMER_EVENT\r\n        )\r\n    AND &#x5B;waiting_tasks_count] &gt; 0\r\n    )\r\nSELECT\r\n    MAX (&#x5B;W1].&#x5B;wait_type]) AS &#x5B;WaitType],\r\n    CAST (MAX (&#x5B;W1].&#x5B;WaitS]) AS DECIMAL (16,2)) AS &#x5B;Wait_S],\r\n    CAST (MAX (&#x5B;W1].&#x5B;ResourceS]) AS DECIMAL (16,2)) AS &#x5B;Resource_S],\r\n    CAST (MAX (&#x5B;W1].&#x5B;SignalS]) AS DECIMAL (16,2)) AS &#x5B;Signal_S],\r\n    MAX (&#x5B;W1].&#x5B;WaitCount]) AS &#x5B;WaitCount],\r\n    CAST (MAX (&#x5B;W1].&#x5B;Percentage]) AS DECIMAL (5,2)) AS &#x5B;Percentage],\r\n    CAST ((MAX (&#x5B;W1].&#x5B;WaitS]) \/ MAX (&#x5B;W1].&#x5B;WaitCount])) AS DECIMAL (16,4)) AS &#x5B;AvgWait_S],\r\n    CAST ((MAX (&#x5B;W1].&#x5B;ResourceS]) \/ MAX (&#x5B;W1].&#x5B;WaitCount])) AS DECIMAL (16,4)) AS &#x5B;AvgRes_S],\r\n    CAST ((MAX (&#x5B;W1].&#x5B;SignalS]) \/ MAX (&#x5B;W1].&#x5B;WaitCount])) AS DECIMAL (16,4)) AS &#x5B;AvgSig_S],\r\n    CAST (&#039;https:\/\/www.sqlskills.com\/help\/waits\/&#039; + MAX (&#x5B;W1].&#x5B;wait_type]) as XML) AS &#x5B;Help\/Info URL]\r\nFROM &#x5B;Waits] AS &#x5B;W1]\r\nINNER JOIN &#x5B;Waits] AS &#x5B;W2] ON &#x5B;W2].&#x5B;RowNum] &lt;= &#x5B;W1].&#x5B;RowNum]\r\nGROUP BY &#x5B;W1].&#x5B;RowNum]\r\nHAVING SUM (&#x5B;W2].&#x5B;Percentage]) - MAX( &#x5B;W1].&#x5B;Percentage] ) &lt; 95; -- percentage threshold\r\nGO\r\n<\/pre>\n<p style=\"text-align: justify;\">This will show the waits grouped together as a percentage of all waits on the system, in decreasing order. The waits to be concerned about (potentially) are those at the top of the list as this represents the majority of where SQL Server is spending it&#8217;s time waiting. You can see that a bunch of waits are being filtered out of consideration &#8211; as I said above, waits happen all the time and these are the benign ones we can usually ignore.<\/p>\n<p>You can also reset the aggregated statistics using this code:<\/p>\n<pre class=\"brush: sql; gutter: true; title: ; toolbar: true; wrap-lines: true; notranslate\" title=\"\">\r\nDBCC SQLPERF (N&#039;sys.dm_os_wait_stats&#039;, CLEAR);\r\nGO\r\n<\/pre>\n<p style=\"text-align: justify;\">And of course you can very easily come up with a way to persist the results every few hours or every day and do some time-series analysis to figure out trends or automatically spot problems as they start to\u00a0happen. On SQL Server 2000 you can use <em>DBCC SQLPERF (N&#8217;waitstats&#8217;)<\/em>, and most 3rd-party performance monitoring tools show you wait statistics too.<\/p>\n<p style=\"text-align: justify;\">Once you get the results, you then start figuring out how to interpret them and where to go looking. The best place to find detailed information on the waits reported is in my\u00a0<a href=\"https:\/\/www.sqlskills.com\/help\/waits\/\" target=\"_blank\" rel=\"noopener noreferrer\">comprehensive library of all wait types and latch classes<\/a>\u00a0and I&#8217;ve also blogged a lot on my <a href=\"https:\/\/www.sqlskills.com\/blogs\/paul\/category\/wait-stats\/\" target=\"_blank\" rel=\"noopener noreferrer\">wait statistics category<\/a>.<\/p>\n<p style=\"text-align: justify;\">For now, I want to report on the results of the <a href=\"https:\/\/www.sqlskills.com\/blogs\/paul\/survey-what-is-the-highest-wait-on-your-system\/\" target=\"_blank\" rel=\"noopener noreferrer\">wait stats survey<\/a> I posted a couple of months back. I asked people to run the original version of the large query above and let me know the results. I received results for a whopping 1,823 SQL Servers out there &#8211; thank you!<\/p>\n<p>Here&#8217;s a graphical view of the results:<\/p>\n<p><img decoding=\"async\" src=\"\/blogs\/paul\/wp-content\/uploads\/2010\/12\/waitstatssurvey.jpg\" alt=\"\" \/><\/p>\n<p>I&#8217;m not surprised at all by the top four results as I see these over and over on client systems.<\/p>\n<p style=\"text-align: justify;\">The list below shows all the waits reported in the survey results, along with a clickable link that will take you to the wait&#8217;s page in my waits library.\u00a0I did another survey in 2014 that showed some interesting changes &#8211; see <a href=\"https:\/\/www.sqlskills.com\/blogs\/paul\/common-wait-stats-24-hours\/\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a> for details.<\/p>\n<p style=\"text-align: justify;\">For the remainder of this post, I&#8217;m going to list all the top wait types reported by survey respondents, in descending order, and give a few words about what\u00a0they\u00a0might mean if they are the most prevalent wait on your system. The list format shows the number of systems with that wait type as the most prevalent, and then the wait type.<\/p>\n<p>Make sure you also check out the more recent post\u00a0<a href=\"https:\/\/www.sqlskills.com\/blogs\/paul\/worrying-wait-type\/\" target=\"_blank\" rel=\"noopener noreferrer\">What is the most worrying wait type?<\/a>\u00a0for more in-depth and up-to-date information.<\/p>\n<p>For all these wait types, you can click the name of the wait to go to its entry in the new wait stats library I released in May 2016.<\/p>\n<ul>\n<li>505: <a href=\"http:\/\/www.sqlskills.com\/help\/waits\/cxpacket\/\" target=\"_blank\" rel=\"noopener noreferrer\">CXPACKET<\/a><\/li>\n<li>304: <a href=\"https:\/\/www.sqlskills.com\/help\/waits\/pageiolatch_sh\/\" target=\"_blank\" rel=\"noopener noreferrer\">PAGEIOLATCH_XX<\/a><\/li>\n<li>275: <a href=\"http:\/\/www.sqlskills.com\/help\/waits\/async_network_io\/\" target=\"_blank\" rel=\"noopener noreferrer\">ASYNC_NETWORK_IO<\/a><\/li>\n<li>112:\u00a0<a href=\"http:\/\/www.sqlskills.com\/help\/waits\/writelog\/\" target=\"_blank\" rel=\"noopener noreferrer\">WRITELOG<\/a><\/li>\n<li>109:\u00a0<a href=\"http:\/\/www.sqlskills.com\/help\/waits\/broker_receive_waitfor\/\" target=\"_blank\" rel=\"noopener noreferrer\">BROKER_RECEIVE_WAITFOR<\/a><\/li>\n<li>086:\u00a0<a href=\"http:\/\/www.sqlskills.com\/help\/waits\/msql_xp\/\" target=\"_blank\" rel=\"noopener noreferrer\">MSQL_XP<\/a><\/li>\n<li>074:\u00a0<a href=\"http:\/\/www.sqlskills.com\/help\/waits\/oledb\/\" target=\"_blank\" rel=\"noopener noreferrer\">OLEDB<\/a><\/li>\n<li>054:\u00a0<a href=\"http:\/\/www.sqlskills.com\/help\/waits\/backupio\/\" target=\"_blank\" rel=\"noopener noreferrer\">BACKUPIO<\/a><\/li>\n<li>041:\u00a0<a href=\"http:\/\/www.sqlskills.com\/help\/waits\/lck_m_ix\/\" target=\"_blank\" rel=\"noopener noreferrer\">LCK_M_XX<\/a><\/li>\n<li>032: <a href=\"http:\/\/www.sqlskills.com\/help\/waits\/ondemand_task_queue\/\" target=\"_blank\" rel=\"noopener noreferrer\">ONDEMAND_TASK_QUEUE<\/a><\/li>\n<li>031:\u00a0<a href=\"http:\/\/www.sqlskills.com\/help\/waits\/backupbuffer\/\" target=\"_blank\" rel=\"noopener noreferrer\">BACKUPBUFFER<\/a><\/li>\n<li>027:\u00a0<a href=\"http:\/\/www.sqlskills.com\/help\/waits\/io_completion\/\" target=\"_blank\" rel=\"noopener noreferrer\">IO_COMPLETION<\/a><\/li>\n<li>024:\u00a0<a href=\"http:\/\/www.sqlskills.com\/help\/waits\/sos_scheduler_yield\/\" target=\"_blank\" rel=\"noopener noreferrer\">SOS_SCHEDULER_YIELD<\/a><\/li>\n<li>022:\u00a0<a href=\"http:\/\/www.sqlskills.com\/help\/waits\/dbmirror_events_queue\/\" target=\"_blank\" rel=\"noopener noreferrer\">DBMIRROR_EVENTS_QUEUE<\/a><\/li>\n<li>022:\u00a0<a href=\"http:\/\/www.sqlskills.com\/help\/waits\/dbmirroring_cmd\/\" target=\"_blank\" rel=\"noopener noreferrer\">DBMIRRORING_CMD<\/a><\/li>\n<li>018:\u00a0<a href=\"http:\/\/www.sqlskills.com\/help\/waits\/pagelatch_ex\/\" target=\"_blank\" rel=\"noopener noreferrer\">PAGELATCH_XX<\/a><\/li>\n<li>016:\u00a0<a href=\"https:\/\/www.sqlskills.com\/help\/waits\/latch_ex\/\" target=\"_blank\" rel=\"noopener noreferrer\">LATCH_XX<\/a><\/li>\n<li>013:\u00a0<a href=\"http:\/\/www.sqlskills.com\/help\/waits\/preemptive_os_pipeops\/\" target=\"_blank\" rel=\"noopener noreferrer\">PREEMPTIVE_OS_PIPEOPS<\/a><\/li>\n<li>013:\u00a0<a href=\"http:\/\/www.sqlskills.com\/help\/waits\/threadpool\/\" target=\"_blank\" rel=\"noopener noreferrer\">THREADPOOL<\/a><\/li>\n<li>009:\u00a0<a href=\"http:\/\/www.sqlskills.com\/help\/waits\/broker_transmitter\/\" target=\"_blank\" rel=\"noopener noreferrer\">BROKER_TRANSMITTER<\/a><\/li>\n<li>006:\u00a0<a href=\"http:\/\/www.sqlskills.com\/help\/waits\/sqltrace_wait_entries\/\" target=\"_blank\" rel=\"noopener noreferrer\">SQLTRACE_WAIT_ENTRIES<\/a><\/li>\n<li>005:\u00a0<a href=\"http:\/\/www.sqlskills.com\/help\/waits\/dbmirror_dbm_mutex\/\" target=\"_blank\" rel=\"noopener noreferrer\">DBMIRROR_DBM_MUTEX<\/a><\/li>\n<li>005:\u00a0<a href=\"http:\/\/www.sqlskills.com\/help\/waits\/resource_semaphore\/\" target=\"_blank\" rel=\"noopener noreferrer\">RESOURCE_SEMAPHORE<\/a><\/li>\n<li>003:\u00a0<a href=\"http:\/\/www.sqlskills.com\/help\/waits\/preemptive_os_authenticationops\/\" target=\"_blank\" rel=\"noopener noreferrer\">PREEMPTIVE_OS_AUTHENTICATIONOPS<\/a><\/li>\n<li>003:\u00a0<a href=\"http:\/\/www.sqlskills.com\/help\/waits\/preemptive_os_genericops\/\" target=\"_blank\" rel=\"noopener noreferrer\">PREEMPTIVE_OS_GENERICOPS<\/a><\/li>\n<li>003:\u00a0<a href=\"http:\/\/www.sqlskills.com\/help\/waits\/sleep_bpool_flush\/\" target=\"_blank\" rel=\"noopener noreferrer\">SLEEP_BPOOL_FLUSH<\/a><\/li>\n<li>002:\u00a0<a href=\"http:\/\/www.sqlskills.com\/help\/waits\/msql_dq\/\" target=\"_blank\" rel=\"noopener noreferrer\">MSQL_DQ<\/a><\/li>\n<li>002:\u00a0<a href=\"http:\/\/www.sqlskills.com\/help\/waits\/resource_semaphore_query_compile\/\" target=\"_blank\" rel=\"noopener noreferrer\">RESOURCE_SEMAPHORE_QUERY_COMPILE<\/a><\/li>\n<li>001:\u00a0<a href=\"http:\/\/www.sqlskills.com\/help\/waits\/dac_init\/\" target=\"_blank\" rel=\"noopener noreferrer\">DAC_INIT<\/a><\/li>\n<li>001:\u00a0<a href=\"http:\/\/www.sqlskills.com\/help\/waits\/mssearch\/\" target=\"_blank\" rel=\"noopener noreferrer\">MSSEARCH<\/a><\/li>\n<li>001:\u00a0<a href=\"http:\/\/www.sqlskills.com\/help\/waits\/preemptive_os_fileops\/\" target=\"_blank\" rel=\"noopener noreferrer\">PREEMPTIVE_OS_FILEOPS<\/a><\/li>\n<li>001:\u00a0<a href=\"http:\/\/www.sqlskills.com\/help\/waits\/preemptive_os_libraryops\/\" target=\"_blank\" rel=\"noopener noreferrer\">PREEMPTIVE_OS_LIBRARYOPS<\/a><\/li>\n<li>001:\u00a0<a href=\"http:\/\/www.sqlskills.com\/help\/waits\/preemptive_os_lookupaccountsid\/\" target=\"_blank\" rel=\"noopener noreferrer\">PREEMPTIVE_OS_LOOKUPACCOUNTSID<\/a><\/li>\n<li>001:\u00a0<a href=\"http:\/\/www.sqlskills.com\/help\/waits\/preemptive_os_queryregistry\/\" target=\"_blank\" rel=\"noopener noreferrer\">PREEMPTIVE_OS_QUERYREGISTRY<\/a><\/li>\n<li>001:\u00a0<a href=\"http:\/\/www.sqlskills.com\/help\/waits\/sqltrace_lock\/\" target=\"_blank\" rel=\"noopener noreferrer\">SQLTRACE_LOCK<\/a><\/li>\n<\/ul>\n<p>I hope you found this interesting! Let me know if there&#8217;s anything in particular you&#8217;re interested in seeing or just that you&#8217;re following along and enjoying the ride!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>(Check out my comprehensive library of all wait types and latch classes.) [Last updated: March 21, 2026] How many times have you walked up to a SQL Server that has a performance problem and wondered where to start looking? One of the most under-utilized performance troubleshooting methodologies in the SQL Server world\u00a0is one called &#8220;waits [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[66,101],"tags":[],"class_list":["post-641","post","type-post","status-publish","format-standard","hentry","category-performance-tuning","category-wait-stats"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>SQL Server Wait Statistics: Tell me where it hurts<\/title>\n<meta name=\"description\" content=\"Learn how to use SQL Server Wait Statistics to help diagnose performance problems.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.sqlskills.com\/blogs\/paul\/wait-statistics-or-please-tell-me-where-it-hurts\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SQL Server Wait Statistics: Tell me where it hurts\" \/>\n<meta property=\"og:description\" content=\"Learn how to use SQL Server Wait Statistics to help diagnose performance problems.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqlskills.com\/blogs\/paul\/wait-statistics-or-please-tell-me-where-it-hurts\/\" \/>\n<meta property=\"og:site_name\" content=\"Paul S. Randal\" \/>\n<meta property=\"article:published_time\" content=\"2010-12-09T15:18:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-22T02:04:30+00:00\" \/>\n<meta name=\"author\" content=\"Paul Randal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Paul Randal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/wait-statistics-or-please-tell-me-where-it-hurts\/\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/wait-statistics-or-please-tell-me-where-it-hurts\/\",\"name\":\"SQL Server Wait Statistics: Tell me where it hurts\",\"isPartOf\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/#website\"},\"datePublished\":\"2010-12-09T15:18:00+00:00\",\"dateModified\":\"2026-03-22T02:04:30+00:00\",\"author\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/ffcec826c18782e1e0adf173826a7fce\"},\"description\":\"Learn how to use SQL Server Wait Statistics to help diagnose performance problems.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/wait-statistics-or-please-tell-me-where-it-hurts\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.sqlskills.com\/blogs\/paul\/wait-statistics-or-please-tell-me-where-it-hurts\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/wait-statistics-or-please-tell-me-where-it-hurts\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SQL Server Wait Statistics (or please tell me where it hurts&#8230;)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/#website\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/\",\"name\":\"Paul S. Randal\",\"description\":\"In Recovery...\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/ffcec826c18782e1e0adf173826a7fce\",\"name\":\"Paul Randal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0b6a266bba2f088f2551ef529293001bd73bf026bc1908b9866728c062beeeb6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0b6a266bba2f088f2551ef529293001bd73bf026bc1908b9866728c062beeeb6?s=96&d=mm&r=g\",\"caption\":\"Paul Randal\"},\"sameAs\":[\"http:\/\/3.209.169.194\/blogs\/paul\"],\"url\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/author\/paul\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"SQL Server Wait Statistics: Tell me where it hurts","description":"Learn how to use SQL Server Wait Statistics to help diagnose performance problems.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.sqlskills.com\/blogs\/paul\/wait-statistics-or-please-tell-me-where-it-hurts\/","og_locale":"en_US","og_type":"article","og_title":"SQL Server Wait Statistics: Tell me where it hurts","og_description":"Learn how to use SQL Server Wait Statistics to help diagnose performance problems.","og_url":"https:\/\/www.sqlskills.com\/blogs\/paul\/wait-statistics-or-please-tell-me-where-it-hurts\/","og_site_name":"Paul S. Randal","article_published_time":"2010-12-09T15:18:00+00:00","article_modified_time":"2026-03-22T02:04:30+00:00","author":"Paul Randal","twitter_misc":{"Written by":"Paul Randal","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/wait-statistics-or-please-tell-me-where-it-hurts\/","url":"https:\/\/www.sqlskills.com\/blogs\/paul\/wait-statistics-or-please-tell-me-where-it-hurts\/","name":"SQL Server Wait Statistics: Tell me where it hurts","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/#website"},"datePublished":"2010-12-09T15:18:00+00:00","dateModified":"2026-03-22T02:04:30+00:00","author":{"@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/ffcec826c18782e1e0adf173826a7fce"},"description":"Learn how to use SQL Server Wait Statistics to help diagnose performance problems.","breadcrumb":{"@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/wait-statistics-or-please-tell-me-where-it-hurts\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqlskills.com\/blogs\/paul\/wait-statistics-or-please-tell-me-where-it-hurts\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/wait-statistics-or-please-tell-me-where-it-hurts\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqlskills.com\/blogs\/paul\/"},{"@type":"ListItem","position":2,"name":"SQL Server Wait Statistics (or please tell me where it hurts&#8230;)"}]},{"@type":"WebSite","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/#website","url":"https:\/\/www.sqlskills.com\/blogs\/paul\/","name":"Paul S. Randal","description":"In Recovery...","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sqlskills.com\/blogs\/paul\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/ffcec826c18782e1e0adf173826a7fce","name":"Paul Randal","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0b6a266bba2f088f2551ef529293001bd73bf026bc1908b9866728c062beeeb6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0b6a266bba2f088f2551ef529293001bd73bf026bc1908b9866728c062beeeb6?s=96&d=mm&r=g","caption":"Paul Randal"},"sameAs":["http:\/\/3.209.169.194\/blogs\/paul"],"url":"https:\/\/www.sqlskills.com\/blogs\/paul\/author\/paul\/"}]}},"_links":{"self":[{"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/posts\/641","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/comments?post=641"}],"version-history":[{"count":0,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/posts\/641\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/media?parent=641"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/categories?post=641"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/tags?post=641"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}