返回数据库中每个文件的空间使用信息。
列名 |
数据类型 |
说明 |
---|---|---|
database_id |
smallint |
数据库 ID。 |
file_id |
smallint |
文件 ID。 file_id 映射到 sys.dm_io_virtual_file_stats 中的 file_id 和 sys.sysfiles 中的 fileid。 |
filegroup_id |
smallint |
文件组 ID。 |
total_page_count |
bigint |
文件中的总页数。 |
allocated_extent_page_count |
bigint |
文件的已分配区中的总页数。 |
unallocated_extent_page_count |
bigint |
文件的未分配区中的总页数。 不包括已分配区中的未使用页。 |
version_store_reserved_page_count |
bigint |
为版本存储分配的统一区中的总页数。 永远不会从混合区分配版本存储页。 不包括 IAM 页,因为 IAM 页始终从混合区进行分配。 如果 PFS 页是从统一区分配的,则包括 PFS 页。 有关详细信息,请参阅 sys.dm_tran_version_store (Transact-SQL)。 |
user_object_reserved_page_count |
bigint |
从统一区为数据库中的用户对象分配的总页数。 计数中包括已分配区中未使用的页。 不包括 IAM 页,因为 IAM 页始终从混合区进行分配。 如果 PFS 页是从统一区分配的,则包括 PFS 页。 可使用 sys.allocation_units 目录视图中的 total_pages 列来返回用户对象中每个分配单元的保留页计数。 但请注意,total_pages 列包括 IAM 页。 |
internal_object_reserved_page_count |
bigint |
从统一区为文件中的内部对象分配的总页数。 计数中包括已分配区中未使用的页。 不包括 IAM 页,因为 IAM 页始终从混合区进行分配。 如果 PFS 页是从统一区分配的,则包括 PFS 页。 不存在可返回每个内部对象的页计数的目录视图或动态管理对象。 |
mixed_extent_page_count |
bigint |
文件的已分配混合区中的已分配和未分配总页数。 混合区包含分配给不同对象的页。 此计数包含文件中的所有 IAM 页。 |
注释
页计数始终为区级计数。 所以,页计数的值始终为八的倍数。 包含全局分配映射表 (GAM) 和共享全局分配映射表 (SGAM) 分配页的区是已分配的统一区。 它们不包含在上文所述的页计数中。
当前版本存储的内容位于 sys.dm_tran_version_store 中。 在文件级而不是会话级和任务级跟踪版本存储页,因为它们是全局资源。 会话会生成版本,但在会话结束时不能删除版本。 版本存储清除必须考虑需要访问特定版本的运行时间最长的事务。 可通过查看 sys.dm_tran_active_snapshot_database_transactions 中的 elapsed_time_seconds 列来发现与版本存储清除相关的运行时间最长的事务。
mixed_extent_page_count 列频繁更改可能指示大量使用 SGAM 页。 如出现此情况,您会看到多个 PAGELATCH_UP 等待,且正在等待 SGAM 页资源。 有关详细信息,请参阅 sys.dm_os_waiting_tasks (Transact-SQL)、sys.dm_os_wait_stats (Transact-SQL) 和 sys.dm_os_latch_stats (Transact-SQL)。
用户对象
用户对象页计数器中包括下列对象:
用户定义的表和索引
系统表和索引
全局临时表和索引
局部临时表和索引
表变量
表值函数中返回的表
内部对象
内部对象只包含在 tempdb 中。 内部对象页计数器中包括下列对象:
用于游标或假脱机操作以及临时大型对象 (LOB) 存储的工作表
用于哈希联接等操作的工作文件
排序段
关系基数
从 |
到 |
关系 |
---|---|---|
sys.dm_db_file_space_usage.database_id, file_id |
sys.dm_io_virtual_file_stats.database_id, file_id |
一对一 |
权限
要求具有服务器的 VIEW SERVER STATE 权限。