mssql sqlserver 获取数据库引擎中IO占用最大的数据库及文件的方法分享


摘要:
下文讲述sqlserver中数据库引擎IO占用最大的数据库,如下所示
实验环境:sql server 2008 R2


在一些ERP中,常常有同事反馈,****系统又慢啦,此时百分之99的情况发生在IO的占用上,此时我们首先要做的是找出IO占用大的数据库及文件,然后从硬件或软件上对其进行解决,使其占用变小。
常见的IO性能指标参数如下:
读取次数
写入次数
等待次数

实现思路:
通过查阅系统视图sys.dm_io_virtual_file_stats获取IO占用最大的数据库及数据库文件

 ​
select DB_NAME(database_id)  as [数据库名称],
       file_name(file_id) as [文件名称], 
       size_on_disk_bytes as [文件实际大小byte],
        

       io_stall_read_ms,  --用户等待文件中发出读取所用的总时间
       io_stall_write_ms, --用户等待在该文件中完成写入所用的总时间
       io_stall,          --用户等待在文件中完成 I/O 操作所用的总时间
 
       num_of_reads,         --在该文件中读取的次数
       num_of_bytes_read,    --在该文件中读取的总字节数
       
       num_of_writes,        --在该文件中写入的次数
       num_of_bytes_written  --在该文件中写入的总字节数
       
from sys.dm_io_virtual_file_stats(null,  --数据库id
                                  null   --文件id
                                 ) 
order by io_stall desc