Preguntas sobre la tienda de versiones tempdb


9

Nos encontramos con un error hoy:

Error: 3967, gravedad: 17

y por lo que puedo decir es básicamente 'tienda de versión completa'. Esto ha generado algunas preguntas que he tenido problemas para responder, ya que en mi tienda nunca hemos tenido este error antes:

  • Si hay un tamaño máximo predeterminado (basado en el tamaño total de tempdb o no), ¿es dinámico?

  • ¿Existe una configuración que lo haga dinámico si no lo es?

  • ¿Podemos configurar alertas basadas en esto? (es decir, DMV para usar para rastrear el tamaño, etc.)

Respuestas:


7

La gravedad 17 indica que SQL Server se quedó sin un recurso requerido. Normalmente, esto se ve cuando una base de datos se queda sin espacio. En este caso, parece que tempdb se está utilizando para leer las filas de la versión de aislamiento de instantáneas confirmadas para una consulta que necesitaba derramarse a tempdb.

Esto podría ser bastante común si tempdb tiene un tamaño máximo limitado y se intenta una consulta mal escrita que, por ejemplo, realiza una unión cruzada muy grande.

Puede usar esta consulta para ver el tamaño actual del almacén de versiones en tempdb:

SELECT *
FROM sys.dm_os_performance_counters dopc
WHERE dopc.counter_name LIKE 'Version %';

Technet tiene un artículo interesante sobre el uso de la tienda de versiones en https://technet.microsoft.com/en-us/library/cc966545.aspx#EDAA

Esta página de MSDN menciona el error 3967:

Cuando tempdb se queda sin espacio, el Motor de base de datos obliga a las tiendas de versiones a reducirse. Durante el proceso de reducción, las transacciones de mayor duración que aún no han generado versiones de fila se marcan como víctimas. Se genera un mensaje 3967 en el registro de errores para cada transacción de víctima. Si una transacción se marca como una víctima, ya no puede leer las versiones de fila en el almacén de versiones. Cuando intenta leer versiones de fila, se genera el mensaje 3966 y la transacción se revierte. Si el proceso de reducción tiene éxito, hay espacio disponible en tempdb.

Ninguna de las páginas que he vinculado anteriormente contiene consejos explícitos sobre el tamaño máximo de la tienda de versiones en tempdb, lo que me lleva a creer que la única limitación es el tamaño máximo configurado de tempdb en sí mismo, menos el espacio que se utiliza en tempdb para otros objetos

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.