共用方式為


sys.dm_db_partition_stats (Transact-SQL)

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

資料行名稱

資料類型

描述

partition_id

bigint

資料分割的識別碼。在資料庫中,這是唯一的。這個值和 sys.partitions 目錄檢視中的 partition_id 的值相同。

object_id

int

資料分割所屬資料表或索引檢視的物件識別碼。

index_id

int

資料分割所屬堆積或索引的識別碼。

0 = 堆積

1 = 叢集索引。

partition_number

int

在索引或堆積內,以 1 為基底的資料分割編號。

in_row_data_page_count

bigint

這個資料分割中用來儲存同資料列資料的頁數。如果資料分割屬於堆積,這個值是堆積中的資料頁數。如果資料分割屬於索引,這個值是分葉層級中的頁數。(計數不包含 B 型樹狀目錄中的非分葉頁數。)以上兩種情況均不包含 IAM (索引配置對應) 頁數。

in_row_used_page_count

bigint

這個資料分割中用來儲存和管理同資料列資料的總頁數。這個計數包括非分葉 B 型樹狀目錄頁數、IAM 頁數,以及 in_row_data_page_count 資料行中包括的所有頁數。

in_row_reserved_page_count

bigint

這個資料分割中為儲存和管理同資料列資料所保留的總頁數,不管這些頁面是否正在使用中。

lob_used_page_count

bigint

資料分割中用來儲存和管理 out-of-row textntextimagevarchar(max)nvarchar(max)varbinary(max)xml 資料行的頁數。IAM 頁數包括在內。

lob_reserved_page_count

bigint

資料分割中為儲存和管理 out-of-row textntextimagevarchar(max)nvarchar(max)varbinary(max)xml 資料行所保留的頁數,不管這些頁面是否正在使用中。IAM 頁數包括在內。

row_overflow_used_page_count

bigint

資料分割中用來儲存管理資料列溢位 varcharnvarcharvarbinarysql_variant 資料行的頁數。IAM 頁數包括在內。

row_overflow_reserved_page_count

bigint

資料分割中為儲存管理資料列溢位 varcharnvarcharvarbinarysql_variant 資料行所保留的頁數,不管這些頁面是否正在使用中。IAM 頁數包括在內。

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

資料分割中的資料列數。

備註

sys.dm_db_partition_stats 顯示資料庫中所有資料分割用來儲存和管理同資料列資料、LOB 資料和資料列溢位資料的空間相關資訊。每個資料分割顯示一個資料列。

在各個不同的系統資料表中,輸出所依據的計數快取於記憶體中或儲存在磁碟中。

同資料列資料、LOB 資料和資料列溢位資料代表組成資料分割的三個配置單位。如需有關配置單位的詳細資訊,請參閱<資料表與索引組織>。您可以查詢 sys.allocation_units 目錄檢視有關資料庫中各配置單位的中繼資料。

如果堆積或索引不分割,則是由一個資料分割組成 (資料分割數目 = 1);因此,只會針對該堆積或索引傳回一個資料列。如需有關資料分割的詳細資訊,請參閱<資料表與索引組織>。您可以查詢 sys.partitions 目錄檢視有關資料庫中所有資料表和索引之各資料分割的中繼資料。

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

權限

需要 VIEW DATABASE STATE 權限來查詢 sys.dm_db_partition_stats 動態管理檢視。如需有關動態管理檢視權限詳細資訊,請參閱<動態管理檢視和函數 (Transact-SQL)>。

範例

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

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

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

B. 傳回資料表與其索引之所有資料分割的所有計數

下列範例會顯示 HumanResources.Employee 資料表與其索引之所有資料分割的所有計數。

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

C. 傳回堆積或叢集索引的總使用頁數和資料列總數

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

USE AdventureWorks;
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