SQL Server 2016 : Diagnostic

Explorer le journal de transactions

Testez gratuitement nos 1271 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Étudiez le fonctionnement du journal de transactions. Vous découvrirez son influence sur les opérations de mise à jour.
07:23

Transcription

Nous avons vu le fichier de données, mais il y a aussi un fichier de journal de transactions, nous en avons parlé. Je regarde dans PachaDataFormation, au niveau des propriétés de la base de données, je vais voir ces informations bien sûr. Au niveau des fichiers, il y a trois types de fichiers ici parce que j'ai créé, sur cette base, un type de fichier « inmemori » donc on va oublier ceci, mais vous avez, ici, « Données de ligne », donc ce fichier est le fichier de données, et puis, vous avez ici un fichier de journal. Voyez aussi une chose, c'est que chaque fichier a un nom logique, qui va permettre de l'identifier, c'est très pratique dans les sauvegardes. Ensuite, chaque fichier a des informations de croissance ou de taille ici, la taille, ici, la croissance automatique et puis, bien entendu, le chemin d'accès sur le disque. Donc, les données sont bien structurées en pages de 8 ko, par contre le fichier de journal, lui, c'est bien un fichier séquentiel. On va jeter un petit coup d'œil. Je m'assure d'être dans PachaDataFormation, je vais mettre ma base de données dans un mode de récupération qui s'appelle le mode simple. Ce que ça va me permettre de faire, c'est de vider le journal de transactions après un checkpoint. Je vais vous expliquer ça dans une seconde. Et ensuite, je vais utiliser une commande « DBCC LOG » qui, vous vous en doutez, est une commande non documentée qui vous permet de voir le contenu du journal de transactions de cette base de données. Pour la syntaxe des DBCC, si je reviens sur ce que je vous ai montré dans la vidéo précédente, « DBCC IND », vous voyez, on a toujours des parenthèses dans les commandes DBCC. Donc, on lance la commande DBCC, on ouvre les parenthèses, on met les paramètres, dans « DBCC IND » et « DBCC PAGE » le premier paramètre, c'est le nom de la base de données, puis, dans « DBCC IND », le deuxième paramètre est le nom de la table et le troisième paramètre, l'identifiant de l'index, index 0, c'est la table elle-même. Ensuite, dans « DBCC PAGE » premier paramètre, le nom de la base de données, deuxième paramètre, le numéro du fichier, troisième paramètre, le numéro de la page dans le fichier 1, et puis, le paramètre « 3 », c'est un paramètre d'affichage, vous avez plusieurs options d'affichage que je vous ai détaillées ici. Là, « 3 » donne une version détaillée des lignes qui sont présentes dans la page, le cas échéant, donc j'utilise presque systématiquement « 3 ». Bon, je reviens ici. Donc, je fais déjà ça. Et ce que j'ai fait en mettant le mode de récupération simple, c'est de m'assurer que quand je fais un checkpoint, eh bien, le fichier va se vider. Qu'est-ce que c'est que ce checkpoint ? En français, point de contrôle. Eh bien, on va le voir directement dans le journal. Voici le contenu de mon journal, et vous voyez qu'à chaque fois, j'ai des opérations ici et qu'il y a un certain nombre d'opérations. Par exemple, des insertions de lignes. Je n'ai pas beaucoup de détails ici car le fichier journal n'a pas un format ouvert. Avec « DBCC LOG », je vais simplement pouvoir voir les opérations mais je n'aurai pas de détails sur celles-ci. Par exemple, je vois ici une insertion de ligne sur un index clustered et ensuite sur un index. Donc, j'ai une insertion de ligne sur une table, l'index clustered, c'est la table, puis j'ai eu une insertion de ligne sur l'index, j'ai peut-être inséré des noms, et donc, on a inséré dans la table contact, puis on a inséré dans l'index nom, qui est sur la colonne nom de la table contact, par exemple. OK, donc, je suis en « recovery simple », je fais un checkpoint, et puis, normalement je m'attends à ce que le log soit vidé. Et qu'est-ce que j'ai ici ? J'ai une opération de checkpoint. Ne regardez pas ces « HK », ça veut dire Hekaton, et ce sont des informations supplémentaires pour une table en mémoire se trouvant dans ma base, mais oublions ça. C'est surtout, je vais vous le surligner comme ceci, c'est surtout ceci qui nous intéresse. On a placé un checkpoint, c'est ici, ou point de contrôle, dans le fichier de journal. Pourquoi ? Parce que dès que je vais faire des modifications, par exemple, ici, je vais faire une série de modifications. J'ai modifié 20 000 lignes. Je vais regarder de nouveau le contenu de mon log, et je vois que j'ai à peu près 100 000 lignes, vous le voyez ici, donc ça veut dire que pour chaque opération, eh bien j'ai eu un certain nombre d'écritures dans le journal. Chaque fois que j'ai fait une modification, c'est-à-dire que j'ai dit de modifier les contacts, « UPDATE Contact.Contact », et on va mettre le nom égal au nom en majuscules, donc on met tous les noms de contact en majuscules. Il y a 20 000 contacts. Cette unique commande a généré une mise à jour de 20 000 noms différents. Donc, dans le journal de transactions, ça s'est traduit par au moins 20 000 écritures, mais plus que ça, puisque pour chaque modification du nom, il faut aussi aller modifier un index, par exemple. Donc, c'est ce qui a été fait ici, on a des modifications, donc on voit qu'on a modifié dans la table, « index clustered », on a marqué un « ghost record », c'est une opération interne d'écriture, et puis, on a eu une écriture dans l'index également. Donc, il y a eu plusieurs opérations à chaque fois. Donc, vous comprenez avec ça que si vous faites des opérations qui vont modifier beaucoup de lignes dans vos tables, eh bien, le journal de transactions va avoir beaucoup d'écritures, et parfois la taille du journal de transactions augmente terriblement lors d'une longue opération, ça peut arriver régulièrement. Et à la rigueur, grâce à cette commande « DBCC LOG » vous pouvez voir le contenu du journal pour vous rendre compte de l'impact de ce que vous faites. Que va-t-il se passer maintenant lorsque le serveur va redémarrer, par exemple. Ici, j'ai fait ces opérations d'écriture. Elles ont été écrites dans le journal de transactions. Mais elles n'ont pas été écrites dans le fichier de données. Les pages n'ont pas été modifiées dans le fichier de données. Donc, elles n'existent sur le disque que dans le journal de transactions. Ça veut dire que si j'arrête SQL Server et que je le redémarre, il faut bien qu'il relise ce journal de transactions pour récupérer ces informations et les écrire réellement. C'est ce qu'on appelle une opération de « recovery. » Lorsque vous démarrez SQL Server, le journal doit être relu. Mais on ne va pas simplement relire des jours de journal de transactions. Donc régulièrement, on va poser un point de contrôle, ou un checkpoint, Je l'ai fait ici à la main, pour les besoins de ma démo, mais vous ne faites jamais cette opération à la main, c'est toujours automatique. Eh bien, régulièrement, une opération de checkpoint va mettre un point de contrôle dans le journal et considérer que ce qui est avant devient la portion inactive et peut être écrite sur le disque. Donc très régulièrement, je vais purger en fait ce journal de toutes ces opérations antérieures, m'assurer que je vais bien écrire dans le fichier de données ces modifications, puis nettoyer le journal pour garder seulement une portion active raisonnable qui va pouvoir être rejouée si je redémarre SQL Server. Voilà donc l'explication du checkpoint.

SQL Server 2016 : Diagnostic

Prenez en main les outils de diagnostic intégrés à SQL Server. Soyez en mesure de comprendre et d'analyser les problèmes de performance rencontrés le plus fréquemment.

1h58 (20 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Date de parution :14 déc. 2016

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !