Get IO Statistics by database

WITH IOStat
AS (
	SELECT DB_NAME(database_id) AS [Database Name]
		,CAST(SUM(num_of_bytes_read + num_of_bytes_written) / 1048576 AS DECIMAL(12, 2)) AS [TotalMB]
		,CAST(SUM(num_of_bytes_read) / 1048576 AS DECIMAL(12, 2)) AS [ReadMB]
		,CAST(SUM(num_of_bytes_written) / 1048576 AS DECIMAL(12, 2)) AS [WriteMB]
	FROM sys.dm_io_virtual_file_stats(NULL, NULL) AS [DM_IO_STATS]
	GROUP BY database_id
	)
SELECT ROW_NUMBER() OVER (
		ORDER BY TotalMB DESC
		) AS [I/O Rank]
	,[Database Name]
	,TotalMB AS [I/O Total (MB)]
	,CAST(TotalMB / SUM(TotalMB) OVER () * 100.0 AS DECIMAL(5, 2)) AS [I/O Total %]
	,ReadMB AS [I/O Read (MB)]
	,CAST(ReadMB / SUM(ReadMB) OVER () * 100.0 AS DECIMAL(5, 2)) AS [I/O Read %]
	,WriteMB AS [I/O Write (MB)]
	,CAST(WriteMB / SUM(WriteMB) OVER () * 100.0 AS DECIMAL(5, 2)) AS [I/O Write %]
FROM IOStat
ORDER BY [I/O Rank]
OPTION (RECOMPILE);

dm_io_virtual_file_stats

Spread the love