Blog Post

How to Measure IO Latency for Database Files in SQL Server

,

In order to get information about the amounts of PHYSICAL reads we perform on database files, SQL Server exposes a DMV called sys.dm_io_virtual_file_stats.

In addition to information about number of reads and writes, and the amounts of bytes read and written, we also have the io_stall_read_ms, io_stall_write_ms and io_stall, which show information about the amount of time we have to wait when reading from each file.

Using the DMV columns, the following script takes a snapshot of the DMV, sleeps for 1 minute and then compares the current state to the state of the snapshot, in order to return the latency per read and per write.

/*========================================================================================================================
Description:This script measures the IO latency for reads and writes for every database file in the instance
The script captures a snapshot of sys.dm_io_virtual_file_stats, sleeps for 1 minute and compares
the current state against the snapshot
Author:Matan Yungman, http://www.madeirasql.com/how-to-measure-io-latency-for-database-files

=========================================================================================================================*/IF OBJECT_ID('tempdb..#io') is not null
DROP TABLE #io
GO
SELECT * INTO #io FROM sys.dm_io_virtual_file_stats(null,null)
WAITFOR DELAY '00:01:00'
SELECT 
DB_NAME(a.database_id),
a.file_id,
a.num_of_reads-b.num_of_reads AS num_of_reads,
a.num_of_writes-b.num_of_writes as num_of_writes,
CASE 
WHEN a.num_of_reads-b.num_of_reads > 0 
THEN
(a.io_stall_read_ms-b.io_stall_read_ms)/(a.num_of_reads-b.num_of_reads) 
ELSE 0 
END AS read_latency,
CASE 
WHEN 
a.num_of_writes-b.num_of_writes > 0 
THEN 
(a.io_stall_write_ms-b.io_stall_write_ms)/(a.num_of_writes-b.num_of_writes) 
ELSE 0 
END AS write_latency
FROM #io b inner join sys.dm_io_virtual_file_stats(null,null) a
ON a.database_id = b.database_id and a.file_id = b.file_id
ORDER BY DB_NAME(a.database_id)
GO

The post How to Measure IO Latency for Database Files in SQL Server appeared first on .

Rate

You rated this post out of 5. Change rating

Share

Share

Rate

You rated this post out of 5. Change rating