SQL Server - Database Read Rate MB/sec and Database Wite Rate MB/sec


I have a specific requirement where we are upgrading our hardware storage and vendor of new hardware storage has requested few performance counters specifically and these are;

Database read rate MB/sec
Database write rate MB/sec

Vendor is specifically interested in database read and write only other than whole disk read and write operations.

Initially i thoughts counters given below can be used but not sure wether they cover what we need;

PhysicalDisk->Disk Read Rate/Bytes
PhysicalDisk->Disk Write Rate/Bytes

I am recording these counters on SQL Server boxes over the period of 24 hours and then gtting the maximum(and converting from Bytes to Kilo Bytes to MB) value out of it to establish database read and write rate in MB/sec.

Please advise if this is not correct and there are some other couners i need to look at and how to get there answer in MB/sec.

Your help and suggestios are appreciated.

Who is Participating?
David ToddSenior DBACommented:

Take a look at this:

    , mf.physical_name
    , io_stall_write_ms / ( 1.0 + num_of_writes ) as average_time_write_ms
    , io_stall_read_ms / ( 1.0 + num_of_reads ) as average_time_reads_ms
FROM    sys.dm_io_virtual_file_stats(NULL, NULL) AS fs
INNER JOIN sys.master_files AS mf 
    ON fs.database_id = mf.database_id
    AND fs.[file_id] = mf.[file_id]

Open in new window

I think it will return the numbers you want for your sql data files, which will ignore other disk access.

Jim P.Commented:
Disk output is always a bottleneck.  Now the way to look at disk from SQL is whether you can control what is written to what disks.

If the vendor is saying the disk is an "aggregate" of "JBOD" (Just a Bunch Of Disks) it doesn't matter if you split the temp from the mdf from the ldf. You have no control on how the data is written and what goes where on the disk channels.

Now if the solution has control on the channels to disk and can assign disks to the certain drives, then that is the better (usually more expensive) solution.

The in-depth is complicated.

But in general you are on the right path.
ezkhanAuthor Commented:
Thanks David. The code you sent does it return read and write BYTES / millisecon.?
David ToddSenior DBACommented:
Hi ezkhan,

The figure is in milliseconds / (read or write)

There might be other columns where you can find the size of the read/write.

ezkhanAuthor Commented:
Thanks alot. This solution worked great.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.