原文地址:SQL SERVER – Script to List Database File Latency
原文作者:Pinal Dave
今天,我们将看到一个非常有趣的脚本来列出数据库文件延迟。我经常在我的综合数据库性能健康检查中使用这个脚本。
我的大多数客户都为他们的数据库使用多个驱动器。我经常在最快的驱动器上看到他们的 TempDB 和日志文件,而他们有巨大的 SAN 来保存数据文件。在 SQL Server 性能调优过程中,我们经常会遇到这样一种情况,即我们必须知道哪个文件,特别是哪个文件比其他文件有更多的延迟。
这是列出数据库文件延迟的脚本:
SELECT DB_NAME(mf.database_id) AS [Database Name],
mf.physical_name [Physical Name],
num_of_reads, num_of_bytes_read, io_stall_read_ms,
num_of_writes, num_of_bytes_written, io_stall_write_ms,
io_stall, size_on_disk_bytes
FROM sys.dm_io_virtual_file_stats(null,null) AS vfs
INNER JOIN sys.master_files AS mf
ON mf.database_id = vfs.database_id
and mf.file_id = vfs.file_id
-- ORDER BY io_stall DESC
上面的脚本将为您提供实例中的所有数据库及其 IO 读取和 IO 写入停顿。列 (io_stall) 包含读取 IO 和写入 IO 的添加。您可以进一步排序此脚本的结果,以便您可以知道哪个文件具有最大的读写 IO。

一旦知道了具有最大 IO 停顿的文件,您可以执行以下任一操作来提高查询的性能。不要忘记订阅 SQL 六十秒系列。
(地址:https://www.youtube.com/pinaldavesqlauthority)
- 减少数据库文件的工作量
- 提高对该数据库文件的查询的整体性能
- 更换为更快的磁盘以获得更好的 IOPS
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




