sys.dm_db_file_space_usage (Transact-SQL)
返回数据库中每个文件的空间使用信息。
注意 |
---|
该视图只适用于 tempdb 数据库。 |
列名 |
数据类型 |
说明 |
---|---|---|
database_id |
smallint |
数据库 ID。 |
file_id |
smallint |
文件 ID。 file_id 映射到 sys.dm_io_virtual_file_stats 中的 file_id,并映射到 sys.sysfiles 中的 fileid。 |
unallocated_extent_page_count |
bigint |
文件的未分配区中的总页数。有关详细信息,请参阅页和区。 不包括已分配区中的未使用页。 |
version_store_reserved_page_count |
bigint |
为版本存储分配的统一区中的总页数。永远不会从混合区分配版本存储页。 不包括 IAM 页,因为 IAM 页始终从混合区进行分配。如果 PFS 页是从统一区分配的,则包括 PFS 页。 有关详细信息,请参阅 sys.dm_tran_version_store。 |
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)。有关 SGAM 页的详细信息,请参阅管理区分配和可用空间。
用户对象
用户对象页计数器中包括下列对象:
用户定义的表和索引
系统表和索引
全局临时表和索引
局部临时表和索引
表变量
表值函数中返回的表
内部对象
内部对象只包含在 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 权限。