sys.dm_tran_top_version_generators (Transact-SQL)

Devuelve una tabla virtual para los objetos que producen la mayor parte de las versiones en el almacén de versiones. sys.dm_tran_top_version_generators devuelve las 256 mayores longitudes de registro agregadas que se agrupan por database_id y rowset_id. sys.dm_tran_top_version_generators recupera datos consultando la tabla virtual dm_tran_version_store. No es eficaz ejecutar sys.dm_tran_top_version_generators, ya que consulta el almacén de versiones y éste puede ser muy grande. Es recomendable utilizar esta función para encontrar los principales consumidores del almacén de versiones.

Sintaxis

sys.dm_tran_top_version_generators

Tabla devuelta

Nombre de columna

Tipo de datos

Descripción

database_id

int

Id. de la base de datos.

rowset_id

bigint

Id. del conjunto de filas.

aggregated_record_length_in_bytes

int

Suma de las longitudes de los registros para cada par de valores database_id y rowset_id existente en el almacén de versiones.

Permisos

Requiere el permiso VIEW SERVER STATE en el servidor.

Comentarios

Como sys.dm_tran_top_version_generators podría tener que leer muchas páginas, ya que recorre el almacén de versiones completo, la ejecución de sys.dm_tran_top_version_generators puede afectar al rendimiento del sistema.

Ejemplos

En el ejemplo siguiente se utiliza un escenario de prueba con cuatro transacciones simultáneas, identificadas con un número de secuencia de transacción (XSN), que se ejecutan en una base de datos con las opciones ALLOW_SNAPSHOT_ISOLATION y READ_COMMITTED_SNAPSHOT establecidas en ON. Se están ejecutando las siguientes transacciones:

  • XSN-57 es una operación de actualización con aislamiento serializable.

  • XSN-58 es igual que XSN-57.

  • XSN-59 es una operación de selección con aislamiento de instantáneas.

  • XSN-60 es igual que XSN-59.

Se ejecuta la siguiente consulta.

SELECT
    database_id,
    rowset_id,
    aggregated_record_length_in_bytes
  FROM sys.dm_tran_top_version_generators;

El conjunto de resultados es el siguiente.

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

En la salida se muestra que todas las versiones son creadas por database_id9 y que las versiones se generan a partir de dos tablas.