sys.dm_io_virtual_file_stats(Transact-SQL)

适用于:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics分析平台系统(PDW)Microsoft Fabric中的SQL数据库

返回数据和日志文件的 I/O 统计信息。 此动态管理功能替换 fn_virtualfilestats 函数。

注意

要调用 Azure Synapse Analytics 中的这个动态管理视图(DMV),请使用名称 sys.dm_pdw_nodes_io_virtual_file_stats 。该语法在 Azure Synapse Analytics 中不被服务器无 SQL 池支持 。

语法

SQL Server 和 Azure SQL 数据库的语法:

sys.dm_io_virtual_file_stats (
    { database_id | NULL } ,
    { file_id | NULL }
)

Azure Synapse Analytics 的语法:

sys.dm_pdw_nodes_io_virtual_file_stats

参数

database_id |零

适用于:SQL Server 2008(10.0.x)及更高版本,Azure SQL 数据库

数据库 ID。 database_id为 int,无默认值。 有效的输入是数据库的ID编号或 NULL。 当 NULL 指定时,SQL Server 实例中的所有数据库都会返回。

你可以指定内置函数 DB_ID

file_id |零

适用于:SQL Server 2008(10.0.x)及更高版本,Azure SQL 数据库

文件的 ID。 file_id为 int,无默认值。 有效的输入是文件的ID编号或 NULL。 当 NULL 指定时,数据库中的所有文件都会返回。

可以指定内置函数 FILE_IDEX ,并引用当前数据库中的文件。

返回的表

列名称 数据类型 描述
database_name sysname 数据库名称

对于 Azure Synapse Analytics,这是存储在由 S pdw_node_id标识的节点上的数据库名称。 每个节点有一个 tempdb 包含13个文件的数据库。 每个节点每个分布版也有一个数据库,每个分布数据库包含五个文件。 例如,如果每个节点包含四个分布,结果显示每个 pdw_node_id分布数据库文件为20个。

不适用于:SQL Server。
database_id smallint 数据库的 ID。

在 Azure SQL 数据库中,这些值在单一数据库或弹性池中是唯一的,但在逻辑服务器中不是唯一的。
file_id smallint 文件的 ID。
sample_ms bigint 自从计算机启动以来的毫秒数。 该列可用于比较该函数的不同输出。

SQL Server 2014(12.x)及更早版本的数据类型为 int 。 在这些版本中,在连续数据库引擎运行时间大约 25 天后,该值将重置为 0。
num_of_reads bigint 对文件发出的读取次数。
num_of_bytes_read bigint 在此文件中读取的总字节数。
io_stall_read_ms bigint 用户等待文件中发出读取所用的总时间(毫秒)。
num_of_writes bigint 在该文件中写入的次数。
num_of_bytes_written bigint 写入文件的总字节数。
io_stall_write_ms bigint 用户等待在该文件中完成写入所用的总时间(毫秒)。
io_stall bigint 用户等待在文件中完成 I/O 操作所用的总时间(毫秒)。
size_on_disk_bytes bigint 该文件在磁盘上占用的字节数。 对于稀疏文件,此数字是数据库快照在磁盘上所占用的实际字节数。
file_handle varbinary 用于此文件的 Windows 文件句柄。
io_stall_queued_read_ms bigint 针对读的 IO 资源调控所引入的总 IO 延迟。 不可为 null。 更多信息请参见 sys.dm_resource_governor_resource_pools

不适用于:SQL Server 2012(11.x)及更早版本。
io_stall_queued_write_ms bigint 针对写的 IO 资源调控所引入的总 IO 延迟。 不可为 null。

不适用于:SQL Server 2012(11.x)及更早版本。
pdw_node_id int 分布节点的标识符。

适用对象:Azure Synapse Analytics

注解

每当启动 SQL Server (MSSQLSERVER) 服务时,计数器将初始化为空。

权限

SQL Server 2019 (15.x) 和早期版本需要 VIEW SERVER STATE 权限。

SQL Server 2022 (16.x) 及更高版本需要 VIEW SERVER PERFORMANCE STATE 对服务器具有权限。

示例

本文中的代码示例使用 AdventureWorks2025AdventureWorksDW2025 示例数据库,可以从 Microsoft SQL Server 示例和社区项目 主页下载该数据库。

A. 返回日志文件的统计信息

适用于:SQL Server 和 Azure SQL 数据库

以下示例返回了 AdventureWorks2025 数据库日志文件的统计数据。

SELECT *
FROM sys.dm_io_virtual_file_stats(DB_ID(N'AdventureWorks2025'), 2);

B. 返回 tempdb 中文件的统计信息

适用对象:Azure Synapse Analytics

SELECT *
FROM sys.dm_pdw_nodes_io_virtual_file_stats
WHERE database_name = 'tempdb'
      AND file_id = 2;