sys.dm_db_partition_stats (Transact-SQL)
現在のデータベースのパーティションごとに、ページ数と行数の情報を返します。
列名 |
データ型 |
説明 |
---|---|---|
partition_id |
bigint |
パーティションの ID。 データベース内で一意です。 これは 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-Tree の非リーフ ページは含まれません。どちらの場合も、IAM (Index Allocation Map) ページは含まれません。 xVelocity メモリ最適化列ストア インデックスでは、常に 0 です。 |
in_row_used_page_count |
bigint |
パーティションで行内データの格納と管理に使用されているページの合計数。 この数には、非リーフ B-tree ページ、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 |
パーティション内の行数の概算値です。 |
説明
sys.dm_db_partition_stats では、データベースにあるすべてのパーティションの行内データ、LOB データ、行オーバーフロー データについて、格納と管理に使用されている領域に関する情報が表示されます。 ここではパーティションごとに 1 行が表示されます。
出力の基になる数字は、メモリにキャッシュされるか、各種システム テーブルのディスクに格納されます。
行内データ、LOB データ、行オーバーフロー データは、パーティションを構成する 3 つのアロケーション ユニットです。 sys.allocation_units カタログ ビューに対して、データベースの各アロケーション ユニットに関するメタデータを取得するクエリを実行できます。
パーティション分割されていないヒープまたはインデックスは、1 つのパーティション (パーティション番号 = 1) で構成されています。したがって、このようなヒープまたはインデックスの場合は 1 行だけが返されます。 sys.partitions カタログ ビューに対して、データベースのすべてのテーブルとインデックスの、各パーティションに関するメタデータを取得するクエリを実行できます。
各テーブルまたはインデックスの合計数は、関連するすべてのパーティションにおける数を加算することで取得されます。
権限
sys.dm_db_partition_stats 動的管理ビューに対してクエリを実行するには、VIEW DATABASE STATE 権限が必要です。 動的管理ビューに対する権限の詳細については、「動的管理ビューおよび関数 (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 テーブルは既定ではパーティション分割されていないため、合計値には 1 つのパーティションだけが含まれます。
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