Questions sur tempdb version store


9

Nous avons rencontré une erreur aujourd'hui:

Erreur: 3967, gravité: 17

et d'après ce que je peux dire, il s'agit essentiellement d'un «magasin de versions complètes». Cela a soulevé certaines questions auxquelles j'ai eu du mal à répondre, car dans ma boutique, nous n'avons jamais eu cette erreur auparavant:

  • S'il existe une taille maximale prédéfinie (basée sur la taille totale de tempdb ou autre), est-elle dynamique?

  • Existe-t-il un paramètre qui le rendrait dynamique s'il ne l'est pas?

  • Pouvons-nous configurer des alertes sur cette base? (c.-à-d. DMV à utiliser pour suivre la taille, etc.)

Réponses:


7

La gravité 17 indique que SQL Server n'a plus de ressource requise. Vous voyez généralement cela lorsqu'une base de données manque d'espace. Dans ce cas, il semble que tempdb soit utilisé pour lire les lignes de version d'isolement de capture instantanée validées pour une requête qui devait se répandre dans tempdb.

Cela peut être assez courant si tempdb a une taille maximale limitée et qu'une requête mal écrite est tentée qui, par exemple, effectue une jointure croisée très importante.

Vous pouvez utiliser cette requête pour voir la taille actuelle du magasin de versions dans tempdb:

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

Technet a un article intéressant sur l'utilisation du magasin de versions sur https://technet.microsoft.com/en-us/library/cc966545.aspx#EDAA

Cette page MSDN mentionne l'erreur 3967:

Lorsque tempdb manque d'espace, le moteur de base de données force les magasins de versions à se réduire. Au cours du processus de réduction, les transactions les plus longues qui n'ont pas encore généré de versions de ligne sont marquées comme victimes. Un message 3967 est généré dans le journal des erreurs pour chaque transaction victime. Si une transaction est marquée comme victime, elle ne peut plus lire les versions de ligne dans le magasin de versions. Lorsqu'il essaie de lire les versions de ligne, le message 3966 est généré et la transaction est annulée. Si le processus de réduction réussit, l'espace devient disponible dans tempdb.

Aucune des pages que j'ai liées ci-dessus ne contient des conseils explicites sur la taille maximale du magasin de versions dans tempdb, ce qui m'amène à croire que la seule limitation est la taille maximale configurée de la tempdb elle-même, moins l'espace utilisé dans tempdb pour d'autres objets.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.