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_id と rowset_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_id 9 で作成され、これらのバージョンが 2 つのテーブルから生成されたことが示されています。