Quantcast
Channel: Le Blog SQL Server d'ElSüket » elsuket
Viewing all articles
Browse latest Browse all 197

Suivre le nombre de fichiers journaux virtuels du fichier du journal des transactions

$
0
0

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 ;)


Viewing all articles
Browse latest Browse all 197

Trending Articles