WITH db_io AS (SELECT DB_NAME(a.database_id) AS [dbname] , CASE WHEN b.type_desc = 'LOG' THEN 'LogFile' ELSE 'DataFile' END AS FileType , num_of_reads , num_of_writes , SUM(a.io_stall) AS io_stall , SUM(num_of_bytes_read + num_of_bytes_written) AS TotalIOBytes FROM sys.dm_io_virtual_file_stats(NULL, NULL) a JOIN sys.master_files b ON a.database_id = b.database_id AND a.file_id = b.file_id GROUP BY DB_NAME(a.database_id) , b.type_desc , num_of_reads , num_of_writes ) SELECT dbname , FileType , num_of_reads , num_of_writes , CAST(1. * TotalIOBytes / (1024 * 1024) AS DECIMAL(12, 2)) AS IO_MB , CAST(1. * io_stall / 1000 AS DECIMAL(12, 2)) AS IO_stall_s , CAST(100. * io_stall / SUM(io_stall) OVER () AS DECIMAL(10, 2)) AS [IO_stall_pct%] ,--占总IO的百分比 row_number() OVER (ORDER BY io_stall DESC) AS rn FROM DB_IO --ORDER BY [IO_stall_pct%] desc