sys.fn_virtualfilestats (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例

返回数据库文件(包括日志文件)的 I/O 统计信息。 在 SQL Server 中,此信息也可从 sys.dm_io_virtual_file_stats 动态管理视图获取。

Transact-SQL 语法约定

语法

  
fn_virtualfilestats ( { database_id | NULL } , { file_id | NULL } )  

参数

database_id |空
数据库的 ID。 database_id 的数据类型为 int,无默认值。 指定 NULL 以返回 SQL Server 实例中的所有数据库的信息。

file_id |空
文件的 ID。 file_id为 int,无默认值。 指定 NULL 可为数据库中的所有文件返回信息。

返回的表

列名 数据类型 描述
DbId smallint 数据库 ID。
FileId smallint 文件 ID。
TimeStamp bigint 提取数据时的数据库时间戳。 SQL Server 2016(13.x)之前的版本中的 int
NumberReads bigint 对文件发出的读取次数。
BytesRead bigint 对文件发出的读取字节数。
IoStallReadMS bigint 用户等待文件的读取 I/O 完成所费的总时间(以毫秒为单位)。
NumberWrites bigint 对文件的写入次数。
BytesWritten bigint 对文件写入的字节数。
IoStallWriteMS bigint 用户等待文件的写入 I/O 完成所费的总时间(以毫秒为单位)。
IoStallMS bigint IoStallReadMS 和 IoStallWriteMS 的总和
FileHandle bigint 文件句柄的值。
BytesOnDisk bigint 磁盘上的物理文件大小(以字节为单位)。

对于数据库文件,此值与sys.database_files的大小相同,但以字节而不是页表示。

对于数据库快照备用文件,它是操作系统用于文件的空间。

备注

fn_virtualfilestats是一个系统表值函数,它提供统计信息,例如对文件执行的 I/O 总数。 可使用该函数来帮助跟踪用户读取文件或写入到文件必须等待的时间长度。 该函数还可帮助您识别出发生了大量 I/O 活动的文件。

权限

要求具有服务器的 VIEW SERVER STATE 权限。

示例

A. 显示数据库的统计信息

以下示例显示 ID 为 1 的数据库中的文件 ID 1 的统计信息。

SELECT *  
FROM fn_virtualfilestats(1, 1);  
GO  

B. 显示命名数据库和文件的统计信息

以下示例显示 AdventureWorks2022 示例数据库中日志文件的统计信息。 系统函数 DB_ID 用于指定 database_id 参数。

SELECT *  
FROM fn_virtualfilestats(DB_ID(N'AdventureWorks2022'), 2);  
GO  

°C 显示所有数据库和文件的统计信息

以下示例显示 SQL Server 实例中所有数据库中所有文件的统计信息。

SELECT *  
FROM fn_virtualfilestats(NULL,NULL);  
GO  

另请参阅

DB_ID (Transact-SQL)
FILE_IDEX (Transact-SQL)
sys.database_files (Transact-SQL)
sys.master_files (Transact-SQL)