sys.dm_tran_top_version_generators (Transact-SQL)

Gibt eine virtuelle Tabelle für die Objekte zurück, die die meisten Versionen im Versionsspeicher erzeugen. sys.dm_tran_top_version_generators gibt die längsten 256 aggregierten Datensatzlängen gruppiert nach database_id und rowset_id zurück. sys.dm_tran_top_version_generators ruft Daten durch Abfragen der virtuellen Tabelle dm_tran_version_store ab. Die Ausführung der sys.dm_tran_top_version_generators-Sicht ist ineffizient, da der Versionsspeicher abgefragt wird, der sehr groß sein kann. Die Verwendung dieser Funktion wird empfohlen, um die größten Consumer des Versionsspeichers zu suchen.

Syntax

sys.dm_tran_top_version_generators

Zurückgegebene Tabelle

Spaltenname

Datentyp

Beschreibung

database_id

int

Datenbank-ID.

rowset_id

bigint

Rowset-ID.

aggregated_record_length_in_bytes

int

Die Summe der Datensatzlängen für jedes Paar aus database_id und rowset_id pair im Versionsspeicher.

Berechtigungen

Erfordert die VIEW SERVER STATE-Berechtigung auf dem Server.

Hinweise

sys.dm_tran_top_version_generators muss möglicherweise viele Seiten lesen, da der gesamte Versionsspeicher gescannt wird. Daher kann durch die Ausführung von sys.dm_tran_top_version_generators die Leistung des Systems beeinträchtigt werden.

Beispiele

Im folgenden Beispiel wird ein Testszenario verwendet, bei dem vier gleichzeitige Transaktionen, die jeweils durch eine Transaktionssequenznummer (XSN) identifiziert sind, in einer Datenbank ausgeführt werden, für die die Optionen ALLOW_SNAPSHOT_ISOLATION und READ_COMMITTED_SNAPSHOT auf ON festgelegt sind. Die folgenden Transaktionen werden ausgeführt:

  • XSN-57 ist ein Aktualisierungsvorgang auf der serialisierbaren Isolationsstufe.

  • XSN-58 ist mit XSN-57 identisch.

  • XSN-59 ist ein Select-Vorgang auf der Snapshotisolationsstufe.

  • XSN-60 ist mit XSN-59 identisch.

Die folgende Abfrage wird ausgeführt.

SELECT
    database_id,
    rowset_id,
    aggregated_record_length_in_bytes
  FROM sys.dm_tran_top_version_generators;

Dies ist das Resultset.

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

Die Ausgabe zeigt, dass alle Versionen von database_id9 erstellt werden und dass die Versionen aus zwei Tabellen generiert werden.