1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| WITH T0 AS
(
SELECT DB_NAME (vfs.database_id) AS DATABASE_NAME,
type_desc AS FILE_NATURE,
CASE WHEN num_of_reads = 0
THEN 0
ELSE (io_stall_read_ms / num_of_reads)
END READ_LATENCY,
CASE WHEN num_of_writes = 0
THEN 0
ELSE (io_stall_write_ms / num_of_writes)
END AS WRITE_LATENCY,
CASE WHEN (num_of_reads = 0 AND num_of_writes = 0)
THEN 0
ELSE (io_stall / (num_of_reads + num_of_writes))
END AS LATENCY,
CASE WHEN num_of_reads = 0
THEN 0
ELSE (num_of_bytes_read / num_of_reads)
END AS AVERAGE_BYTE_PER_READ,
CASE WHEN num_of_writes = 0
THEN 0
ELSE (num_of_bytes_written / num_of_writes)
END AS AVERAGE_BYTE_PER_WRITE,
CASE WHEN (num_of_reads = 0 AND num_of_writes = 0)
THEN 0
ELSE ((num_of_bytes_read + num_of_bytes_written) /
(num_of_reads + num_of_writes)) END AS AVERAGE_BYTE_PER_TRANSFER,
LEFT (mf.physical_name, 2) AS DRIVE,
mf.physical_name AS FILE_NAME
FROM sys.dm_io_virtual_file_stats (NULL,NULL) AS vfs
JOIN sys.master_files AS mf
ON vfs.database_id = mf.database_id
AND vfs.file_id = mf.file_id
)
SELECT *, CASE WHEN LATENCY <= 5 THEN 'GOOD'
WHEN LATENCY <= 15 THEN 'CORRECT'
ELSE 'BAD' END AS STATUS
FROM T0
ORDER BY LATENCY DESC; |
Partager