sys.dm_db_partition_stats (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)

針對目前資料庫中的每個資料分割,傳回頁面和資料列計數資訊。

注意

若要從 Azure Synapse Analytics 或 Analytics Platform System (PDW) 呼叫此專案,請使用 名稱 sys.dm_pdw_nodes_db_partition_stats。 中的 sys.dm_pdw_nodes_db_partition_stats partition_id與 Azure Synapse Analytics 目錄 sys.partitions 檢視中的partition_id不同。 Azure Synapse Analytics 的無伺服器 SQL 集區不支援此語法。

資料行名稱 資料類型 描述
partition_id bigint 數據分割的標識碼。 這是資料庫內唯一的。 這與目錄檢視中的 sys.partitionspartition_id相同,但 Azure Synapse Analytics 除外。
object_id int 分割區所屬之數據表或索引檢視的物件標識碼。
index_id int 分割區所屬之堆積或索引的標識碼。

0 = 堆積
1 = 叢集索引。
> 1 = 非叢集索引
partition_number int 索引或堆積內的1個分割區編號。
in_row_data_page_count bigint 用於儲存此分割區中數據列內數據的頁數。 如果分割區是堆積的一部分,此值就是堆積中的數據頁數。 如果分割區是索引的一部分,此值就是分葉層級中的頁數。 (B+ 樹狀結構中的非分頁不包含在計數中。IAM (索引設定對應) 頁面未包含在任一案例中。 xVelocity 記憶體優化數據行存放區索引一律為 0。
in_row_used_page_count bigint 用來儲存和管理此分割區內數據列數據的頁數總數。 此計數包括非分葉 B+ 樹狀目錄頁面、IAM 頁面,以及in_row_data_page_count數據行中包含的所有頁面。 數據行存放區索引的一律為 0。
in_row_reserved_page_count bigint 不論頁面是否正在使用中,保留用於儲存和管理此分割區內數據的頁面總數。 數據行存放區索引的一律為 0。
lob_used_page_count bigint 用於儲存和管理數據列外文字ntext、imagevarchar(max)、nvarchar(max)varbinary(max)分割區內 xml 數據行的頁數。 包含 IAM 頁面。

用來在分割區中儲存和管理數據行存放區索引的 BLOB 總數。
lob_reserved_page_count bigint 保留用於儲存和管理數據列外文字ntext、imagevarchar(max)、nvarchar(max)varbinary(max)分割區內 xml 數據行的頁面總數,不論頁面是否正在使用中。 包含 IAM 頁面。

保留用於儲存和管理數據分割中數據行存放區索引的 BLOB 總數。
row_overflow_used_page_count bigint 用於儲存和管理數據列溢位 varchar、nvarcharvarbinary數據分割內sql_variant數據行的頁數。 包含 IAM 頁面。

數據行存放區索引的一律為 0。
row_overflow_reserved_page_count bigint 保留用於儲存和管理數據列溢位 varchar、nvarcharvarbinarysql_variant 數據行的頁面總數,不論頁面是否在使用中。 包含 IAM 頁面。

數據行存放區索引的一律為 0。
used_page_count bigint 用於數據分割的頁面總數。 計算為 in_row_used_page_count + lob_used_page_count + row_overflow_used_page_count。
reserved_page_count bigint 為分割區保留的頁面總數。 計算為in_row_reserved_page_count + lob_reserved_page_count row_overflow_reserved_page_count。 +
row_count bigint 分割區中大約的數據列數目。
pdw_node_id int 適用於:Azure Synapse Analytics、Analytics Platform System (PDW)

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

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

備註

sys.dm_db_partition_stats動態管理檢視 (DMV) 會顯示用來儲存和管理數據列內 LOB 數據的空間相關信息,以及資料庫中所有數據分割的數據列溢位數據。 每個資料分割顯示一個資料列。

輸出所依據的計數會快取於記憶體中,或儲存在各種系統數據表的磁碟上。

同資料列資料、LOB 資料和資料列溢位資料代表組成資料分割的三個配置單位。 您可以查詢 sys.allocation_units 目錄檢視有關資料庫中各配置單位的中繼資料。

如果未分割堆積或索引,則由一個分割區組成(分割區編號 = 1):因此,只會針對該堆積或索引傳回一個數據列。 您可以查詢 sys.partitions 目錄檢視有關資料庫中所有資料表和索引之各資料分割的中繼資料。

個別資料表或索引的總計數可以藉由加入所有相關資料分割的計數來取得。

權限

VIEW DATABASE STATE需要和VIEW DEFINITION許可權才能查詢sys.dm_db_partition_stats動態管理檢視。 如需動態管理檢視許可權的詳細資訊,請參閱動態管理檢視和函式 (Transact-SQL)。

SQL Server 2022 和更新版本的權限

需要資料庫的 VIEW DATABASE PERFORMANCE STATE 和 VIEW SECURITY DEFINITION 許可權。

範例

A. 傳回資料庫中所有索引和堆積之所有分割區的所有計數

下列範例顯示 AdventureWorks2022 資料庫中所有索引和堆積之所有分割區的所有計數。

USE AdventureWorks2022;  
GO  
SELECT * FROM sys.dm_db_partition_stats;  
GO  

B. 傳回數據表及其索引之所有分割區的所有計數

下列範例顯示數據表及其索引之所有分割 HumanResources.Employee 區的所有計數。

USE AdventureWorks2022;  
GO  
SELECT * FROM sys.dm_db_partition_stats   
WHERE object_id = OBJECT_ID('HumanResources.Employee');  
GO  

C. 傳回堆積或叢集索引的已使用頁面總數和數據列總數

下列範例會傳回數據表堆積或叢集索引 HumanResources.Employee 的已使用頁面總數和數據列總數。 Employee因為數據表預設不會分割,請注意總和只包含一個分割區。

USE AdventureWorks2022;  
GO  
SELECT SUM(used_page_count) AS total_number_of_used_pages,   
    SUM (row_count) AS total_number_of_rows   
FROM sys.dm_db_partition_stats  
WHERE object_id=OBJECT_ID('HumanResources.Employee')    AND (index_id=0 or index_id=1);  
GO