Journal des transactions à écriture anticipée

Cette rubrique décrit le rôle que joue le journal des transactions à écriture anticipée (journal WAL) au niveau de l'enregistrement sur disque des modifications apportées aux données. Pour obtenir des informations de base sur les journaux de transactions, consultez Vue d'ensemble du journal des transactions.

SQL Server utilise un journal WAL (write-ahead log) qui garantit qu'aucune modification de donnée n'est écrite sur le disque avant l'écriture du journal associé sur celui-ci. Ainsi, les propriétés ACID (Atomicité, Cohérence, Isolation et Durabilité) d'une transaction sont conservées. Pour plus d'informations sur les transactions et les propriétés ACID, consultez Transactions (moteur de base de données).

Pour comprendre le fonctionnement du journal à écriture anticipée, il est important que vous sachiez comment les données modifiées sont écrites sur le disque. SQL Server gère un cache des tampons dans lequel il lit les pages de données lorsque celles-ci doivent être extraites. Les modifications de données ne sont pas apportées directement sur le disque mais sur une copie de la page dans le cache des tampons. La modification n'est pas écrite sur le disque jusqu'à ce qu'un point de contrôle se produise dans la base de données, ou la modification doit être écrite sur le disque de sorte que la mémoire tampon puisse être utilisée pour contenir une nouvelle page. Le processus d'écriture d'une page de données modifiée, du cache des tampons vers le disque, porte le nom de vidage. Une page modifiée dans la mémoire cache mais qui n'est pas encore écrite sur le disque est appelée page incorrecte.

Lorsqu'une page est modifiée dans la mémoire tampon, un enregistrement est créé dans le cache du journal qui consigne la modification. Cet enregistrement doit être écrit sur le disque avant que la page incorrecte associée n'ait été vidée du cache vers le disque. Si la page incorrecte est vidée avant l'écriture de l'enregistrement de journal, elle crée une modification sur le disque qui ne peut pas être restaurée en cas de défaillance du serveur. SQL Server possède une logique qui empêche une page incorrecte d'être vidée avant l'écriture de l'enregistrement de journal associé. Les enregistrements de journal sont écrits sur le disque lorsque les transactions sont validées.

Notes

Certains lecteurs IDE SATA mettent en cache les écritures de données en mémoire interne avant que les données soient écrites sur disque. Cela empêche le fonctionnement correct du journal WAL (write-ahead log). Si l'ordinateur qui exécute SQL Server utilise l'un de ces types de disques, vous devez activer l'option enable_force_flush.