sys.dm_db_partition_stats (Transact-SQL)
針對目前資料庫中的每個資料分割,各傳回其頁面和資料列計數資訊。
適用於:SQL Server (SQL Server 2008 透過目前版本)、Windows Azure SQL 資料庫 (初始版本,透過目前版本)。 |
資料行名稱 |
資料類型 |
描述 |
---|---|---|
partition_id |
bigint |
資料分割的識別碼。 在資料庫中,這是唯一的。 這個值和 sys.partitions 目錄檢視中的 partition_id 的值相同。 |
object_id |
int |
資料分割所屬資料表或索引檢視的物件識別碼。 |
index_id |
int |
資料分割所屬之堆積或索引的識別碼。 0 = 堆積 1 = 叢集索引。 > 1 = 非叢集索引 |
partition_number |
int |
在索引或堆積內,以 1 為基底的資料分割編號。 |
in_row_data_page_count |
bigint |
這個資料分割中用來儲存同資料列資料的頁數。 如果資料分割屬於堆積,這個值是堆積中的資料頁數。 如果資料分割屬於索引,這個值是分葉層級中的頁數。 (計數不包含 B 型樹狀目錄中的非分葉頁數。)以上兩種情況均不包含 IAM (索引配置對應) 頁數。 xVelocity 記憶體最佳化的資料行存放區索引之 Always 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 |
資料分割中用來儲存和管理 out-of-row text、ntext、image、varchar(max)、nvarchar(max)、varbinary(max) 和 xml 資料行的頁數。 IAM 頁數包括在內。 資料分割中用來儲存和管理資料行存放區索引的 LOB 總數。 |
lob_reserved_page_count |
bigint |
資料分割中為儲存和管理 out-of-row text、ntext、image、varchar(max)、nvarchar(max)、varbinary(max) 和 xml 資料行所保留的頁數,不管這些頁面是否正在使用中。 IAM 頁數包括在內。 保留在資料分割中儲存和管理資料行存放區索引的 LOB 總數。 |
row_overflow_used_page_count |
bigint |
資料分割中用來儲存管理資料列溢位 varchar、nvarchar、varbinary 和 sql_variant 資料行的頁數。 IAM 頁數包括在內。 永遠是 0,表示資料行存放區索引。 |
row_overflow_reserved_page_count |
bigint |
資料分割中為儲存管理資料列溢位 varchar、nvarchar、varbinary 和 sql_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 |
此資料分割中大約的資料列數目。 |
備註
sys.dm_db_partition_stats 顯示資料庫中所有資料分割用來儲存和管理同資料列資料、LOB 資料和資料列溢位資料的空間相關資訊。 每個資料分割顯示一個資料列。
在各個不同的系統資料表中,輸出所依據的計數快取於記憶體中或儲存在磁碟中。
同資料列資料、LOB 資料和資料列溢位資料代表組成資料分割的三個配置單位。 您可以查詢 sys.allocation_units 目錄檢視有關資料庫中各配置單位的中繼資料。
如果堆積或索引不分割,則是由一個資料分割組成 (資料分割數目 = 1);因此,只會針對該堆積或索引傳回一個資料列。 您可以查詢 sys.partitions 目錄檢視有關資料庫中所有資料表和索引之各資料分割的中繼資料。
個別資料表或索引的總計數可以藉由加入所有相關資料分割的計數來取得。
權限
需要 VIEW DATABASE STATE 權限來查詢 sys.dm_db_partition_stats 動態管理檢視。 如需有關動態管理檢視權限詳細資訊,請參閱<動態管理檢視和函數 (Transact-SQL)>。
範例
A.傳回資料庫中所有索引和堆積之所有資料分割的所有計數
下列範例會顯示 AdventureWorks2012 資料庫中所有索引和堆積之所有資料分割的所有計數。
USE AdventureWorks2012;
GO
SELECT * FROM sys.dm_db_partition_stats;
GO
B.傳回資料表與其索引之所有資料分割的所有計數
下列範例會顯示 HumanResources.Employee 資料表與其索引之所有資料分割的所有計數。
USE AdventureWorks2012;
GO
SELECT * FROM sys.dm_db_partition_stats
WHERE object_id = OBJECT_ID('HumanResources.Employee');
GO
C.傳回堆積或叢集索引的總使用頁數和資料列總數
下列範例會傳回 HumanResources.Employee 資料表之堆積或叢集索引的總使用頁數和資料列總數。 因為依預設不會分割 Employee 資料表,請注意總和只包括一個資料分割。
USE AdventureWorks2012;
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