Get lock waits for the current database

SELECT o.name AS [table_name]
	,i.name AS [index_name]
	,ios.index_id
	,ios.partition_number
	,SUM(ios.row_lock_wait_count) AS [total_row_lock_waits]
	,SUM(ios.row_lock_wait_in_ms) AS [total_row_lock_wait_in_ms]
	,SUM(ios.page_lock_wait_count) AS [total_page_lock_waits]
	,SUM(ios.page_lock_wait_in_ms) AS [total_page_lock_wait_in_ms]
	,SUM(ios.page_lock_wait_in_ms) + SUM(row_lock_wait_in_ms) AS [total_lock_wait_in_ms]
FROM sys.dm_db_index_operational_stats(DB_ID(), NULL, NULL, NULL) AS ios
INNER JOIN sys.objects AS o WITH (NOLOCK) ON ios.[object_id] = o.[object_id]
INNER JOIN sys.indexes AS i WITH (NOLOCK) ON ios.[object_id] = i.[object_id]
	AND ios.index_id = i.index_id
WHERE o.[object_id] > 100
GROUP BY o.name
	,i.name
	,ios.index_id
	,ios.partition_number
HAVING SUM(ios.page_lock_wait_in_ms) + SUM(row_lock_wait_in_ms) > 0
ORDER BY total_lock_wait_in_ms DESC
OPTION (RECOMPILE);

Spread the love