第七章——DMVs和DMFs(4)——用DMV和DMF监控磁盘IO

186 篇文章 6 订阅
130 篇文章 240 订阅

前言:

        本文为本系列最后一篇,作为DBA,你必须经常关注磁盘的I/O问题,一旦出现问题,要尽快分析出是什么问题。SQLServer同样提供了一些列与I/O相关的DMO来做监控。

        本文介绍如何使用DMO来监控I/O子系统的性能并找到I/O瓶颈。通过本文,可以区分不同数据库的I/O使用模式。一旦发现有数据库的I/O很高,可能需要考虑把数据库迁移到单独的磁盘,或者深入研究I/O产生的问题。

 

准备工作:

本文将演示如何监控数据库文件的I/O情况,将在SQLServer 2008R2上的AdventureWorks数据库上做演示。

 

步骤:

1、  打开SQLServer,连到AdventureWorks

2、  输入以下脚本监控SQLServer实例上的日志文件和数据文件:

 

SELECT  DB_NAME(VFS.database_id) AS DatabaseName ,
        MF.name AS LogicalFileName ,
        MF.physical_name AS PhysicalFileName ,
        CASE MF.type
          WHEN 0 THEN 'Data File'
          WHEN 1 THEN 'Log File'
        END AS FileType ,
        VFS.num_of_reads AS TotalReadOperations ,
        VFS.num_of_bytes_read AS TotalBytesRead ,
        VFS.num_of_writes AS TotalWriteOperations ,
        VFS.num_of_bytes_written AS TotalWriteOperations ,
        VFS.io_stall_read_ms AS TotalWaitTimeForRead ,
        VFS.io_stall_write_ms AS TotalWaitTimeForWrite ,
        VFS.io_stall AS TotalWaitTimeForIO ,
        VFS.size_on_disk_bytes AS FileSizeInBytes
FROM    sys.dm_io_virtual_file_stats(NULL, NULL) AS VFS
        INNER JOIN sys.master_files AS MF ON VFS.database_id = MF.database_id
                                             AND VFS.file_id = MF.file_id
ORDER BY VFS.database_id DESC


 

 

3、  在新窗口输入以下脚本,清空数据缓存:

 

USE AdventureWorks
GO
DBCC DROPCLEANBUFFERS
GO 
SELECT  *
FROM    [Sales].[SalesOrderDetail]
GO


 

 

4、  现在再次执行第二步中的脚本,看看情况。

5、  执行下面的语句,查看是否有IO挂起操作:

SELECT  DB_NAME(VFS.database_id) AS DatabaseName ,
        MF.name AS LogicalFileName ,
        MF.physical_name AS PhysicalFileName ,
        CASE MF.type
          WHEN 0 THEN 'Data File'
          WHEN 1 THEN 'Log File'
        END AS FileType ,
        PIOR.io_type AS InputOutputOperationType ,
        PIOR.io_pending AS Is_Request_Pending ,
        PIOR.io_handle ,
        PIOR.scheduler_address
FROM    sys.dm_io_pending_io_requests AS PIOR
        INNER JOIN sys.dm_io_virtual_file_stats(DB_ID('AdventureWorks'), NULL)
        AS VFS ON PIOR.io_handle = VFS.file_handle
        INNER JOIN sys.master_files AS MF ON VFS.database_id = MF.database_id
                                             AND VFS.file_id = MF.file_id
GO


 

 

分析:

        首先要切记不要随便在正式环境使用DBCC DROPCLEANBUFFERS命令,这个将会在一段时间内严重影响性能。

        在本例中,对于sys.dm_io_pending_io_requests可能在本机中会没有数据,因为在单机情况下基本上很少io操作,从而挂起的可能性大大降低,但是在正式环境,多用户连接和操作时,就很有可能发生挂起情况。

        上面提到的DMO对查找I/O子系统问题很有帮助,根据这些信息,再进一步找到高I/O的数据库,同时检查所在磁盘的I/O情况。

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值