sys.dm_db_partition_stats (Transact-SQL)
適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Microsoft Fabric の SQL エンドポイント
Microsoft Fabric のウェアハウス
現在のデータベースのパーティションごとに、ページ数と行数の情報を返します。
注意
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 では、データベースにあるすべてのパーティションの行内データ、LOB データ、行オーバーフロー データについて、格納と管理に使用されている領域に関する情報が表示されます。 ここではパーティションごとに 1 行が表示されます。
出力の基になる数字は、メモリにキャッシュされるか、各種システム テーブルのディスクに格納されます。
行内データ、LOB データ、行オーバーフロー データは、パーティションを構成する 3 つのアロケーション ユニットです。
パーティション分割されていないヒープまたはインデックスは、1 つのパーティション (パーティション番号 = 1) で構成されています。したがって、このようなヒープまたはインデックスの場合は 1 行だけが返されます。
各テーブルまたはインデックスの合計数は、関連するすべてのパーティションにおける数を加算することで取得されます。
アクセス許可
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
参照
動的管理ビューと動的管理関数 (Transact-SQL)
データベース関連の動的管理ビュー (Transact-SQL)
フィードバック
フィードバックの送信と表示