sys.dm_db_file_space_usage (Transact-SQL)
傳回資料庫中每一個檔案的空間使用方式資訊。
適用於:SQL Server (SQL Server 2008 至目前版本)。 |
資料行名稱 |
資料類型 |
描述 |
|
---|---|---|---|
database_id |
smallint |
資料庫識別碼。 |
|
file_id |
smallint |
檔案識別碼。 file_id 會對應至 sys.dm_io_virtual_file_stats 中的 file_id 及 sys.sysfiles 中的 fileid。 |
|
filegroup_id |
smallint |
檔案群組識別碼。
|
|
total_page_count |
bigint |
檔案中的總頁數。
|
|
allocated_extent_page_count |
bigint |
檔案中的已配置範圍中的總頁數。
|
|
unallocated_extent_page_count |
bigint |
檔案中的未配置範圍中的總頁數。 不包含已配置範圍中的未使用頁面。 |
|
version_store_reserved_page_count |
bigint |
配置給版本存放區的一致範圍中的總頁數。 絕不從混合範圍配置版本存放區頁面。 不包含 IAM 頁面,因為它們一律從混合範圍中配置。 如果 PFS 頁面是從一致範圍配置,則會包含它們。 如需詳細資訊,請參閱<sys.dm_tran_version_store (Transact-SQL)>。 |
|
user_object_reserved_page_count |
bigint |
從一致範圍中配置給資料庫使用者物件的總頁數。 這個計數不包括已配置範圍中的未使用頁面。 不包含 IAM 頁面,因為它們一律從混合範圍中配置。 如果 PFS 頁面是從一致範圍配置,則會包含它們。 您可以使用 sys.allocation_units 目錄檢視中的 total_pages 資料行,傳回使用者物件中每一個配置單位的已保留頁數。 不過請注意,total_pages 資料行包含 IAM 頁面。 |
|
internal_object_reserved_page_count |
bigint |
配置給檔案中內部物件之一致範圍中的總頁數。 這個計數不包括已配置範圍中的未使用頁面。 不包含 IAM 頁面,因為它們一律從混合範圍中配置。 如果 PFS 頁面是從一致範圍配置,則會包含它們。 沒有目錄檢視或動態管理物件可傳回每一個內部物件的頁數。 |
|
mixed_extent_page_count |
bigint |
檔案中已配置混合範圍的已配置和未配置總頁數。 混合範圍包含已配置給不同物件的頁面。 這個計數包含檔案中的所有 IAM 頁面。 |
備註
頁數一律在範圍層級上產生。 因此,頁數值一定是 8 的倍數。 包含 Global Allocation Map (GAM) 和 Shared Global Allocation Map (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 權限。
範例
判斷 tempdb 的可用空間量
下列查詢會傳回 tempdb 的所有檔案中可用的總頁數和總空間 (以 MB 表示)。
USE tempdb;
GO
SELECT SUM(unallocated_extent_page_count) AS [free pages],
(SUM(unallocated_extent_page_count)*1.0/128) AS [free space in MB]
FROM sys.dm_db_file_space_usage;
判斷使用者物件使用的空間量
下列查詢會傳回 tempdb 中使用者物件使用的總頁數和使用者物件使用的總空間。
USE tempdb;
GO
SELECT SUM(user_object_reserved_page_count) AS [user object pages used],
(SUM(user_object_reserved_page_count)*1.0/128) AS [user object space in MB]
FROM sys.dm_db_file_space_usage;