sys.dm_tran_top_version_generators (Transact-SQL)

バージョン ストアに最も多くバージョンを作成しているオブジェクトの仮想テーブルを返します。sys.dm_tran_top_version_generators は、集計済みのレコード長の上位 256 個を、database_id および rowset_id でグループ化して返します。sys.dm_tran_top_version_generators は、dm_tran_version_store 仮想テーブルにクエリを実行してデータを取得します。バージョン ストアは非常に大きい場合があり、バージョン ストアにクエリを実行する sys.dm_tran_top_version_generators ビューは、あまり効率的ではありません。この関数は、バージョン ストアを最も多く使用しているオブジェクトを特定する場合に使用することをお勧めします。

構文

sys.dm_tran_top_version_generators

返されるテーブル

列名

データ型

説明

database_id

int

データベース ID。

rowset_id

bigint

行セット ID。

aggregated_record_length_in_bytes

int

バージョン ストアの database_idrowset_id pair の組ごとのレコード長の合計。

権限

サーバーに対する VIEW SERVER STATE 権限が必要です。

説明

sys.dm_tran_top_version_generators では、バージョン ストア全体のスキャンで多くのページが読み取られるため、sys.dm_tran_top_version_generators を実行するとシステムのパフォーマンスに影響が生じる場合があります。

次の例では、4 つの同時実行トランザクションが存在するテスト シナリオを使用します。これらのトランザクションはそれぞれトランザクション シーケンス番号 (XSN) で識別され、ALLOW_SNAPSHOT_ISOLATION オプションと READ_COMMITTED_SNAPSHOT オプションが ON に設定されているデータベース内で実行されます。実行されるトランザクションは次のとおりです。

  • XSN-57。SERIALIZABLE 分離での更新操作です。

  • XSN-58。XSN-57 と同じです。

  • XSN-59。スナップショット分離での選択操作です。

  • XSN-60。XSN-59 と同じです。

次のクエリを実行します。

SELECT
    database_id,
    rowset_id,
    aggregated_record_length_in_bytes
  FROM sys.dm_tran_top_version_generators;

以下に結果セットを示します。

database_id rowset_id            aggregated_record_length_in_bytes
----------- -------------------- ---------------------------------
9           72057594038321152    87
9           72057594038386688    33

この結果では、すべてのバージョンが database_id9 で作成され、これらのバージョンが 2 つのテーブルから生成されたことが示されています。