Avant d’envisager une réduction du fichier du journal des transactions, il convient de connaître le nombre de fichiers virtuels que contient le fichier du journal des transactions.
On peut également envisager de le faire grossir de nouveau pour avoir moins de fichiers virtuels, et obtenir de meilleures performances pour les transactions manipulant un grand volume de données.
Voyons comment faire cela :
Il s’agit ici d’utiliser une bonne vieille commande DBCC non documentée : DBCC LOGINFO.
Chaque ligne retournée par l’instruction DBCC LOGINFO représente en fait un fichier virtuel.
Sur une base de données de production pour laquelle le fichier du journal des transactions est sauvegardé régulièrement mais où la croissance automatique a été mal gérée, on peut obtenir un grand nombre de fichiers virtuels.
En effet, le fichier du journal des transactions grossit suivant le paramètre d’agrandissement de celui-ci pour la base de données considérée.
Si celui-ci est petit, nous aurons un nombre de fichiers virtuels élevé.
D’où, encore une fois, l’importance de tailler les fichiers de la base de données lors de la création de celle-ci.
En fait, les fichiers virtuel en cours d’utilisation ont leur valeur de colonne Status égale à 2.
Si l’on veut donc savoir combien sont en cours d’utilisation, il suffit d’exécuter le petit script suivant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | DECLARE @vlf TABLE ( FileId tinyint , FileSize bigint , StartOffset bigint , FSeqNo int , Status tinyint , Parity tinyint , CreateLSN varchar(21) ) INSERT @vlf EXEC ('DBCC LOGINFO') SELECT SUM(FileSize) / 1048576 AS total_file_size_MB , SUM ( CASE Status WHEN 2 THEN FileSize ELSE 0 END ) / 1048576 AS file_size_in_use_MB , COUNT(*) AS VLF_amount , SUM ( CASE Status WHEN 2 THEN 1 ELSE 0 END ) AS VLF_in_use FROM @vlf |
Bonne gestion du fichier du journal des transactions
ElSuket