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

前端之家收集整理的这篇文章主要介绍了SQL Server 2008:每个数据库文件的I / O等待时间前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在运行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;

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

原文链接:https://www.f2er.com/mssql/78463.html

猜你在找的MsSQL相关文章