sys.dm_tran_top_version_generators (Transact-SQL)
適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
バージョン ストアに最も多くバージョンを作成しているオブジェクトの仮想テーブルを返します。 sys.dm_tran_top_version_generators は、 database_id と rowset_idでグループ化された上位 256 の集計レコード長を返します。 sys.dm_tran_top_version_generators は、 dm_tran_version_store 仮想テーブルに対してクエリを実行してデータを取得します。 sys.dm_tran_top_version_generators は、このビューがバージョン ストアに対してクエリを実行し、バージョン ストアが非常に大きくなる可能性があるため、実行する非効率的なビューです。 この関数を使用して、バージョン ストアの最大コンシューマーを検索することをお勧めします。
Note
これを Azure Synapse Analytics または Analytics Platform System (PDW) から呼び出すには、 sys.dm_pdw_nodes_tran_top_version_generatorsという名前を使用します。 この構文は、Azure Synapse Analytics のサーバーレス SQL プールでサポートされていません。
構文
sys.dm_tran_top_version_generators
返されるテーブル
列名 | データ型 | 説明 |
---|---|---|
database_id | int | データベース ID。 Azure SQL Database では、値は 1 つのデータベースまたは Elastic Pool 内で一意ですが、論理サーバー内では一意ではありません。 |
rowset_id | bigint | 行セット ID。 |
aggregated_record_length_in_bytes | int | バージョン ストア内の各 database_id と rowset_idペア のレコード長の合計。 |
pdw_node_id | int | 適用対象: Azure Synapse Analytics、Analytics Platform System (PDW) このディストリビューションがオンになっているノードの識別子。 |
アクセス許可
SQL Server と SQL Managed Instance では、VIEW SERVER STATE
アクセス許可が必要です。
SQL Database の Basic、S0、S1 サービス対象、および Elastic Pool のデータベースの場合、サーバー管理者アカウント、Microsoft Entra 管理者アカウント、または ##MS_ServerStateReader##
サーバー ロールのメンバーシップが必要です。 他のすべての SQL Database サービス目標では、データベースに対する VIEW DATABASE STATE
アクセス許可または ##MS_ServerStateReader##
サーバー ロールのメンバーシップのいずれかが必要です。
SQL Server 2022 以降でのアクセス許可
サーバーに対する VIEW SERVER PERFORMANCE 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 つのテーブルから生成されることを示しています。
関連項目
動的管理ビューと動的管理関数 (Transact-SQL)
トランザクション関連の動的管理ビューおよび関数 (Transact-SQL)