SQL优化之监控篇:找到IO争用

 

上一篇讲到如何从实例级别,知道最大的瓶颈在哪儿。

一般情况下数据库的瓶颈很有可能在 IO上,因为当数据库比较大的时候,内存没办法缓存下所有数据,所以,总是需要从磁盘读取数据到内存,在从内存访问数据进行计算的,而磁盘的访问速度和内存的访问速度相差千倍,就会拖慢整个处理速度。

 

可以通过sys.dm_io_virtual_file_stats 函数, 获取到 数据库-文件级别的性能统计信息,包括:

1、读取次数,读取字节数

2、写入次数,写入字节数

3、等待次数

这样我们就能知道哪个数据库、哪个文件是访问最频繁的,这就是IO瓶颈。

 

代码如下:

​
select DB_NAME(database_id),

       file_name(file_id),
       
       -- 该文件在磁盘上占用的字节数。
       --对于稀疏文件,此数字是数据库快照在磁盘上所占用的实际字节数 
       size_on_disk_bytes,
       
       sample_ms,         --自从计算机启动以来的毫秒数
       io_stall_read_ms,  --用户等待文件中发出读取所用的总时间
       io_stall_write_ms, --用户等待在该文件中完成写入所用的总时间
       io_stall,          --用户等待在文件中完成 I/O 操作所用的总时间
                          --为io_stall_read_ms+io_stall_write_ms
       
       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

​

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值