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 = クラスタ化インデックス

partition_number

int

インデックスまたはヒープ内の、1 から始まるパーティション番号。

in_row_data_page_count

bigint

パーティションで行内データの格納に使用されているページ数。パーティションがヒープに属している場合、値はヒープのデータ ページ数になります。パーティションがインデックスに属している場合、値はリーフ レベルのページ数になります。B-Tree の非リーフ ページは含まれません。どちらの場合も、IAM (Index Allocation Map) ページは含まれません。

in_row_used_page_count

bigint

パーティションで行内データの格納と管理に使用されているページの合計数。この数には、非リーフ B-tree ページ、IAM ページ、および in_row_data_page_count 列内にあるすべてのページが含まれます。

in_row_reserved_page_count

bigint

パーティションで行内データの格納と管理に予約されているページの合計数。ページが使用されているかどうかは考慮されません。

lob_used_page_count

bigint

パーティションで行外の textntextimagevarchar(max)nvarchar(max)varbinary(max)xml 型列の格納と管理に使用されているページ数。IAM ページは含まれます。

lob_reserved_page_count

bigint

パーティションで行外の 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 データ、行オーバーフロー データについて、格納と管理に使用されている領域に関する情報が表示されます。ここではパーティションごとに 1 行が表示されます。

出力の基になる数字は、メモリにキャッシュされるか、各種システム テーブルのディスクに格納されます。

行内データ、LOB データ、行オーバーフロー データは、パーティションを構成する 3 つのアロケーション ユニットです。アロケーション ユニットの詳細については、「テーブルとインデックスの編成」を参照してください。sys.allocation_units カタログ ビューに対して、データベースの各アロケーション ユニットに関するメタデータを取得するクエリを実行できます。

パーティション分割されていないヒープまたはインデックスは、1 つのパーティション (パーティション番号 = 1) で構成されています。したがって、このようなヒープまたはインデックスの場合は 1 行だけが返されます。パーティションの詳細については、「テーブルとインデックスの編成」を参照してください。sys.partitions カタログ ビューに対して、データベースのすべてのテーブルとインデックスの、各パーティションに関するメタデータを取得するクエリを実行できます。

各テーブルまたはインデックスの合計数は、関連するすべてのパーティションにおける数を加算することで取得されます。

権限

sys.dm_db_partition_stats 動的管理ビューに対してクエリを実行するには、VIEW DATABASE STATE 権限が必要です。動的管理ビューに対する権限の詳細については、「動的管理ビューおよび関数 (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 テーブルは既定ではパーティション分割されていないため、合計値には 1 つのパーティションだけが含まれます。

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