sys.dm_db_partition_stats (Transact-SQL)
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
現在のデータベースのパーティションごとに、ページ数と行数の情報を返します。
Note
これを 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 | パーティションの ID。 データベース内で一意です。 これは、Azure Synapse Analytics を除き、sys.partitions カタログ ビューのpartition_id と同じ値です。 |
object_id |
int | パーティションが属するテーブルまたはインデックス付きビューのオブジェクト ID。 |
index_id |
int | パーティションが属するヒープまたはインデックスの ID。 0 = ヒープ 1 = クラスター化インデックス > 1 = 非クラスター化インデックス |
partition_number |
int | インデックスまたはヒープ内の、1 から始まるパーティション番号。 |
in_row_data_page_count |
bigint | パーティションで行内データの格納に使用されているページ数。 パーティションがヒープに属している場合、値はヒープのデータ ページ数になります。 パーティションがインデックスに属している場合、値はリーフ レベルのページ数になります。 (B+ ツリーの非リーフ ページはカウントに含まれません。) IAM (Index Allocation Map) ページはどちらのケースでも含まれません。 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 | パーティションで行外の text、ntext、image、varchar(max)、nvarchar(max)、varbinary(max)、xml 型列の格納と管理に使用されているページ数。 IAM ページは含まれます。 パーティションで列ストア インデックスの格納と管理に使用されている LOB の合計数。 |
lob_reserved_page_count |
bigint | パーティションで行外の 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 | パーティション内の行数の概算値です。 |
pdw_node_id |
int | 適用対象: Azure Synapse Analytics、Analytics Platform System (PDW) このディストリビューションがオンになっているノードの識別子。 |
distribution_id |
int | 適用対象: Azure Synapse Analytics、Analytics Platform System (PDW) 分布に関連付けられている一意の数値 ID。 |
解説
sys.dm_db_partition_stats
動的管理ビュー (DMV) には、行内データ LOB データの格納と管理に使用される領域と、データベース内のすべてのパーティションの行オーバーフロー データに関する情報が表示されます。 ここではパーティションごとに 1 行が表示されます。
出力の基になっているカウントは、メモリにキャッシュされるか、さまざまなシステム テーブルのディスクに格納されます。
行内データ、LOB データ、行オーバーフロー データは、パーティションを構成する 3 つのアロケーション ユニットです。 sys.allocation_units カタログ ビューに対して、データベースの各アロケーション ユニットに関するメタデータを取得するクエリを実行できます。
パーティション分割されていないヒープまたはインデックスは、1 つのパーティション (パーティション番号 = 1) で構成されています。したがって、このようなヒープまたはインデックスの場合は 1 行だけが返されます。 sys.partitions カタログ ビューに対して、データベースのすべてのテーブルとインデックスの、各パーティションに関するメタデータを取得するクエリを実行できます。
各テーブルまたはインデックスの合計数は、関連するすべてのパーティションにおける数を加算することで取得されます。
アクセス許可
sys.dm_db_partition_stats
動的管理ビューに対してクエリを実行するには、VIEW DATABASE STATE
とVIEW DEFINITION
のアクセス許可が必要です。 動的管理ビューの権限について詳しくは、動的管理ビューと関数 (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
テーブルは既定ではパーティション分割されていないため、合計値には 1 つのパーティションだけが含まれます。
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