Quelle est l'importance des VLFS lorsqu'ils envisagent des performances de la base de données? Qu'est-ce qui décrirait une situation optimale pour les VLFS?
Qu'est-ce qu'un fichier journal virtuel?
SQL Server divise le fichier journal des transactions pour chaque base de données en morceaux plus petits, appelé "Fichiers journaux virtuels" (ou VLFS pour bref). Leur fonction principale est comme des marqueurs de troncature à une sauvegarde de journal, c'est-à-dire que le serveur SQL n'expliquera que (et marquer des marques à réutilisation) VLFS complètement vides. MSDN a une pièce sur Journal de transaction - Architecture physique .
Qu'est-ce qui détermine le nombre de VLFS?
Chaque fois qu'un fichier journal augmente (via une croissance automatique ou une croissance manuelle), la nouvelle section du fichier journal est divisée en un certain nombre de VLFS, uniquement sur la taille de la taille de la nouvelle section (le journal de transaction existant est laissé seul). Ainsi, les petits paramètres d'autogrotth (c'est-à-dire l'autogrotthe de 10% qui correspond à la valeur par défaut) entraînera la création d'un grand nombre de VLF.
Quelles sont les implications d'un grand nombre de VLFS?
Le principal problème qu'un grand nombre de causes VLFS sont:
DBCC
car ils utilisent des instantanés de base de données en arrière-plan pour faciliter les contrôles de cohérence sans blocage).Comment puis-je savoir combien de VLFS ma base de données a?
DBCC LOGINFO
retournera 1 rangée pour chaque VLF dans le journal de transaction de votre base de données. Cette question a quelques scripts utiles pour l'application de toutes les bases de données sur un serveur .
Combien de VLFS est trop nombreux?
C'est un appel de jugement que vous devrez faire vous-même. Ma règle de base personnelle est que moins de 50 ans ne vaut pas la peine de jouer avec et plus de 100 (environ) et je corrige des paramètres de autogrotthe et faire une note mentale à (dans la prochaine fenêtre de maintenance), rétrécissez et reprochez le journal (comme ci-dessous). .
aide! J'ai de onze milliards de VLFS et ma récupération de base de données prend toute la journée!
Contour court (de Blog de Kimberly Tripp ):
BACKUP LOG
)DBCC SHRINKFILE
avec TRUNCATEONLY
pour réduire le fichier journal à la taille la plus petite possible.ALTER DATABASE [...] MODIFY FILE [...] SIZE=newsize
Pour redimensionner votre décharge de transaction en une seule étape **.** Remarque - Si vous avez un fichier journal très volumineux (dizaines de gbs ou plus), vous souhaiterez peut-être redimensionner plusieurs étapes pour obtenir un nombre approprié de VLFS avec une taille appropriée pour éviter des sauvegardes de journalisation excessivement "chunky". Étant donné que les VLFS sont l'unité de troncature, ils déterminent également les tailles de sauvegarde du journal, comme indiqué sur Blog de Kim .