分享方式:


sys.dm_db_file_space_usage (Transact-SQL)

適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW)

傳回資料庫中每個數據檔的空間使用量資訊。

注意

若要從 Azure Synapse Analytics 或 Analytics Platform System (PDW) 呼叫此專案,請使用 名稱 sys.dm_pdw_nodes_db_file_space_usage。 Azure Synapse Analytics 的無伺服器 SQL 集區不支援此語法。

資料行名稱 資料類型 描述
database_id smallint 資料庫識別碼。

在 Azure SQL 資料庫中,這些值在單一資料庫或彈性集區內是唯一的,但在邏輯伺服器內則不是唯一的。
file_id smallint 檔案標識碼。

file_id會對應至 file_id sys.dm_io_virtual_file_stats 和 sys.sysfiles 中的 fileid。
filegroup_id smallint 適用於:SQL Server 2012 (11.x) 和更新版本。

檔案群組標識碼。
total_page_count bigint 適用於:SQL Server 2012 (11.x) 和更新版本。

數據檔中的總頁數。
allocated_extent_page_count bigint 適用於:SQL Server 2012 (11.x) 和更新版本。

數據檔中已配置範圍中的總頁數。
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 頁面,則會包含這些頁面。

您可以使用total_pagessys.allocation_units目錄檢視中的資料行,傳回用戶物件中每個配置單位的保留頁面計數。 不過,數據 total_pages 行包含IAM頁面。
internal_object_reserved_page_count bigint 配置給檔案內部物件之統一範圍中的頁面總數。 配置範圍中的未使用頁面會包含在計數中。

不會包含 IAM 頁面,因為它們一律會從混合範圍配置。 如果從統一範圍配置 PFS 頁面,則會包含這些頁面。

沒有目錄檢視或動態管理物件會傳回每個內部對象的頁面計數。
mixed_extent_page_count bigint 檔案中配置混合範圍中已配置和未配置頁面的總數。 混合範圍包含配置給不同對象的頁面。 此計數確實包含檔案中的所有IAM頁面。
modified_extent_page_count bigint 適用於:SQL Server 2016 (13.x) SP2 和更新版本。

自上次完整資料庫備份以來,檔案已配置範圍中修改的頁面總數。 修改的頁面計數可用來追蹤資料庫自上次完整備份后的差異變更數目,以判斷是否需要差異備份。
pdw_node_id int 適用於:Azure Synapse Analytics、Analytics Platform System (PDW)

此散發節點的標識碼。
distribution_id int 適用於:Azure Synapse Analytics、Analytics Platform System (PDW)

與分佈相關聯的唯一數值標識符。

備註

頁面計數一律位於範圍層級。 因此,頁面計數值一律是八個的倍數。 包含全域配置對應 (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 一對一

權限

在 SQL Server 2019 (15.x) 和舊版上,SQL 受管理執行個體 需要VIEW SERVER STATE許可權。

在 SQL Server 2022 (16.x) 和更新版本上,需要伺服器上的 VIEW SERVER PERFORMANCE STATE 許可權。

在 SQL 資料庫 基本、S0 和 S1 服務目標上,以及彈性集區中的資料庫,需要伺服器管理員帳戶、Microsoft Entra 管理員帳戶或伺服器角色的成員##MS_ServerStateReader##資格。 在所有其他 SQL Database 服務目標上,需要資料庫的 VIEW DATABASE STATE 權限或 ##MS_ServerStateReader## 伺服器角色的成員資格。

範例

判斷中的可用空間量 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;

另請參閱