加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQL Server 2008:每个数据库文件的I / O等待时间

发布时间:2020-12-12 06:35:10 所属栏目:MsSql教程 来源:网络整理
导读:我正在运行SQL Server 2008 Enterprise Edition,并希望监视以下性能指标,即通过动态管理视图(在SQL中): Average/Maximum Read/Write I/O Waits in ms per database file for sliding time window. 即:每个数据库文件4个数字:avg read wait,max read wait,a
我正在运行SQL Server 2008 Enterprise Edition,并希望监视以下性能指标,即通过动态管理视图(在SQL中):

Average/Maximum Read/Write I/O Waits in ms per database file
for sliding time window.

即:每个数据库文件4个数字:avg read wait,max read wait,avg write wait,max write wait.全部以ms为单位,全部用于一些理智(甚至更好的可配置)滑动时间窗口.

我怎样才能做到这一点?

PS:我有VIEW SERVER STATE权限,可以读取sys.dm_os_performance_counters,sys.database_files,sys.dm_io_virtual_file_stats等等

PS2:至少有一个工具(SQL Server的Quest Spotlight 7)能够以每个数据库文件的毫秒数提供最大I / O等待.所以必须有一些方法..

解决方法

以下是SSMS的Activie Monitor使用的查询.它们将io_stall字段标记为总等待时间.您可以添加fs.io_stall_read_ms和fs.io_stall_write_ms字段以获取读/写特定数字.
SELECT     
    d.name AS [Database],f.physical_name AS [File],(fs.num_of_bytes_read / 1024.0 / 1024.0) [Total MB Read],(fs.num_of_bytes_written / 1024.0 / 1024.0) AS [Total MB Written],(fs.num_of_reads + fs.num_of_writes) AS [Total I/O Count],fs.io_stall AS [Total I/O Wait Time (ms)],fs.size_on_disk_bytes / 1024 / 1024 AS [Size (MB)],fs.io_stall_read_ms
FROM sys.dm_io_virtual_file_stats(default,default) AS fs
INNER JOIN sys.master_files f ON fs.database_id = f.database_id AND fs.file_id = f.file_id
INNER JOIN sys.databases d ON d.database_id = fs.database_id;

此查询仅为您提供总计.您必须以某个间隔运行它并将结果记录在带有时间戳的临时表中.然后,您可以根据需要查询此表以获取最小值/最大值/平均值.滑动时间窗口只是您在该表中保留的数据量以及查询的时间段的函数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读