17
2.2 Structures de stockage
cées, vous devez utiliser sp_configure lui-même pour les activer avec sp_configure
'show advanced option', '1'.
La fréquence d’exécution des points de contrôle est donc calculée par rapport à
cet intervalle, et selon la quantité de transactions dans le journal. Elle sera basse
pour une base principalement utilisée pour la lecture, et de plus en plus haute selon
le volume de modifications. Vous n’avez généralement pas besoin de modifier cette
option. Si vous faites l’expérience de pointes d’écriture sur le disque de données,
avec une file d’attente qui bloque d’autres lectures/écritures, et seulement dans ce
cas, vous pouvez songer à l’augmenter, par exemple à cinq minutes, en continuant à
surveiller les compteurs de disque, pour voir si la situation s’améliore. Nous reviendrons sur ces compteurs dans la section 5.3 concernant le moniteur système.
La conservation des transactions dans le journal après point de contrôle est contrôlée par l’option de base de données appelée mode de récupération (recovery
model). Elle est modifiable par la fenêtre de propriétés d’une base de données dans
SSMS, ou par la commande :
ALTER DATABASE [base] SET RECOVERY { FULL | BULK_LOGGED | SIMPLE }
Les trois options modifient le comportement du journal de la façon suivante :
• FULL – Toutes les transactions sont conservées dans le journal, en vue de
leur sauvegarde. Cette option n’est donc à activer que sur les bases de données
pour lesquelles vous voulez pratiquer une stratégie de sauvegarde impliquant
des sauvegardes de journaux. Seule cette option, alliée aux sauvegardes,
permet de réaliser des restaurations à un point dans le temps. Si le journal
n’est pas sauvegardé, le fichier grandira indéfiniment pour conserver toutes les
transactions enregistrées.
• BULK_LOGGED – Afin de ne pas augmenter exagérément la taille du journal, les opérations en lot (BULK INSERT, SELECT INTO, CREATE INDEX…) sont
journalisées de façon minimale, c’est-à-dire que leurs transactions ne sont pas
enregistrées en détail. Seules les adresses de pages modifiées sont inscrites dans
le journal. Lors de la sauvegarde de journal, les extensions modifiées sont
ajoutées à la sauvegarde. Si une sauvegarde de journal contient des modifications en lot, la sauvegarde ne pourra pas être utilisée pour une restauration à
un point dans le temps.
• SIMPLE – Dans le mode simple, le journal de transactions est vidé de son
contenu inutile (ce qu’on appelle la portion inactive du journal) après chaque
point de contrôle. Aucune sauvegarde de journal n’est donc possible. Par
contre, la taille du journal restera probablement raisonnable.
En SQL Server, le journal de transactions consiste en un ou plusieurs fichiers, au
remplissage séquentiel, dans un format propriétaire complètement différent des
fichiers de données. Ce format n’est pas publié par Microsoft, ce qui fait qu’il n’y a
pas réellement de méthode officielle pour en lire le contenu et en retirer des infor-
2.2 Structures de stockage
cées, vous devez utiliser sp_configure lui-même pour les activer avec sp_configure
'show advanced option', '1'.
La fréquence d’exécution des points de contrôle est donc calculée par rapport à
cet intervalle, et selon la quantité de transactions dans le journal. Elle sera basse
pour une base principalement utilisée pour la lecture, et de plus en plus haute selon
le volume de modifications. Vous n’avez généralement pas besoin de modifier cette
option. Si vous faites l’expérience de pointes d’écriture sur le disque de données,
avec une file d’attente qui bloque d’autres lectures/écritures, et seulement dans ce
cas, vous pouvez songer à l’augmenter, par exemple à cinq minutes, en continuant à
surveiller les compteurs de disque, pour voir si la situation s’améliore. Nous reviendrons sur ces compteurs dans la section 5.3 concernant le moniteur système.
La conservation des transactions dans le journal après point de contrôle est contrôlée par l’option de base de données appelée mode de récupération (recovery
model). Elle est modifiable par la fenêtre de propriétés d’une base de données dans
SSMS, ou par la commande :
ALTER DATABASE [base] SET RECOVERY { FULL | BULK_LOGGED | SIMPLE }
Les trois options modifient le comportement du journal de la façon suivante :
• FULL – Toutes les transactions sont conservées dans le journal, en vue de
leur sauvegarde. Cette option n’est donc à activer que sur les bases de données
pour lesquelles vous voulez pratiquer une stratégie de sauvegarde impliquant
des sauvegardes de journaux. Seule cette option, alliée aux sauvegardes,
permet de réaliser des restaurations à un point dans le temps. Si le journal
n’est pas sauvegardé, le fichier grandira indéfiniment pour conserver toutes les
transactions enregistrées.
• BULK_LOGGED – Afin de ne pas augmenter exagérément la taille du journal, les opérations en lot (BULK INSERT, SELECT INTO, CREATE INDEX…) sont
journalisées de façon minimale, c’est-à-dire que leurs transactions ne sont pas
enregistrées en détail. Seules les adresses de pages modifiées sont inscrites dans
le journal. Lors de la sauvegarde de journal, les extensions modifiées sont
ajoutées à la sauvegarde. Si une sauvegarde de journal contient des modifications en lot, la sauvegarde ne pourra pas être utilisée pour une restauration à
un point dans le temps.
• SIMPLE – Dans le mode simple, le journal de transactions est vidé de son
contenu inutile (ce qu’on appelle la portion inactive du journal) après chaque
point de contrôle. Aucune sauvegarde de journal n’est donc possible. Par
contre, la taille du journal restera probablement raisonnable.
En SQL Server, le journal de transactions consiste en un ou plusieurs fichiers, au
remplissage séquentiel, dans un format propriétaire complètement différent des
fichiers de données. Ce format n’est pas publié par Microsoft, ce qui fait qu’il n’y a
pas réellement de méthode officielle pour en lire le contenu et en retirer des infor-
