SQL Server 2016 : Maintenance des progiciels tiers

Utiliser l'isolation read committed snapshot

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Utilisez le niveau d'isolation read committed snapshot pour limiter les problématiques de blocage. Il s'agit des cas où de nombreuses écritures bloquent souvent des lectures.
05:17

Transcription

J’ai activé « READ COMMITED SNAPSHOT ». Alors déjà, qu'est-ce que ça veut dire ? « READ COMMITED », c’est ce qu’on appelle un niveau d’isolation. Lorsque j’ai lancé cette requête, j’ai verrouillé mes données parce que je veux qu’elles soient isolées des autres sessions. Si je suis en train de modifier une donnée, je ne vais pas pouvoir modifier cette donnée dans une autre session. Sinon, si je peux faire des modifications en même temps, je n’ai plus de cohérence des données. Ça, ça s’appelle dans la « gestion transactionnelle », « l’isolation de la transaction ». Le niveau d’isolation par défaut dans « SQL server » s’appelle « READ COMMITED ». Et c’est justement ce qui permet le blocage que nous avons vu avant. Si je modifie cette donnée, en même temps je ne dois pas pouvoir la lire dans une autre session parce que je veux des lectures « READ COMMITED » c'est-à-dire des lectures propres. Si je peux lire en même temps, je vais avoir une donnée qui n’est pas encore validée au niveau de ma transaction. Et donc elle va être sale. Le niveau « READ COMMITED » me dit : « si tu fais une lecture, et que tu vois que la donnée est en train d’être modifiée, tu attends. » Et c’est exactement ce qui s’est passé avant. Mais je vais indiquer que je veux changer ce niveau d’isolation par défaut, en lui appliquant une variante qui s’appelle « READ COMMITED SNAPSHOT ». On dit aussi dans le jargon « RCSI ». Donc « RCSI » pour « READ COMMITED SNAPSHOT ISOLATION ». Alors, ce que je demande c’est si je suis en niveau « READ COMMITED », c'est-à-dire le niveau par défaut, eh bien, passe en mode « SNAPSHOT ». Et le mode « SNAPSHOT » va faire ceci : lorsque je vais lancer cette requête maintenant, il va y avoir une copie des lignes, la version précédente de ces lignes, qui va être copiée dans « TempDB », dans un dépôt de version, ce qu’on appel un « version store », dans la base de donnée système « TempDB ». Et lorsque je vais faire la lecture ici, je vais lire cette version ancienne qui est transactionnellement cohérente juste avant la modification. Donc, je lis toujours une donnée propre, mais c’est simplement une donnée propre antérieure. La modification est en cours. Lorsqu’elle sera validée, j’aurais une nouvelle donnée propre. Mais en attendant, je lis la précédente avant modification. Donc vous voyez que c’est intéressant. Mais je viens de vous dire que ça fait des copies de version dans « tempDB ». Donc, il faut que vous optimisiez « tempDB », que vous mettiez base de données sur un disque rapide et que vous surveilliez « tempDB ». Si vous n’avez pas besoin de cette fonctionnalité, ne l’activez-pas car ça a une charge supplémentaire. À chaque modification il faut faire une copie de la ligne ou des lignes dans « tempDB ». Maintenant, je vous montre ce que ça donne. Je fais mon « Begin transaction», je fais un « update » et vous notez que je veux tous les prénoms à « Irina » sur le nom « Simon ». Et maintenant je vais faire une lecture. Vous voyez que je ne suis pas bloqué. Je n’ai plus besoin d’attendre, donc c’est instantané. Je n’ai plus de blocage. Mais par contre, les prénoms sont les prénoms anciens. Mais en fait je dis « mais », mais je devrais dire « Eh ! C’est très bien. » Je ne veux pas avoir l’influence d’une transaction en cours. Je lis les données propres, transactionnellement cohérentes avant le début de cette opération. Donc si vous avez des problématiques de blocage entre lecture et écriture, le mode « RCSI » peut nettement vous aider. Vous aurez toujours des blocages entre écriture et écriture, si vous essayez d’écrire deux fois en même temps. Eh bien, il y aura toujours blocage parce que ce mode ne gère pas des verrous d’écriture. Il gère simplement l’accès aux versions de lignes, dans des verrous de lecture. Et donc, si vous voulez le désactiver, eh bien vous pouvez mettre un « OFF » ici évidemment. Mais pensez-y, identifiez les situations de blocage si vous en avez, si c’est un blocage entre de la lecture et de l’écriture, eh bien utilisez ce mode et surveillez tempDB. « Comment on peut voir que c’est de la lecture et de l’écritre ? » vous allez me dire. On va juste jeter un coup d’œil. Je me mets en « OFF » ici, pour revenir à la situation antérieure. Ici, je n’ai plus besoin de faire un ROLLBACK parce que j’ai dû être déconnecté. Voilà. Mais je recommence. Je me mets dans « PachaDataFormation ». La base a changé parce que j’ai été reconnecté automatiquement. « L’ALTER DATABASE » a été fait « WITH ROLLBACK IMMEDIATE », donc j’ai été déconnecté. Je fais mon « UPDATE ». Et ici, je refais mon « SELECT », et je suis toujours en attente. Je vais revenir ici. Je vois que, donc j’ai une situation de blocage qui est ici, et vous voyez cette indication, « LOCK » ? Eh bien, on indique ici que c’est un « LOCK » de type « SHARED ». Donc « S » pour « SHARED », c’est un « LOCK » de lecture. Si vous voyez des attentes de ce type, et il y a un « WAIT TYPE », qui indique qu’on essaie d’acquérir un verrou partagé, ça se termine par « S », donc ça commence par « LCK » pour « LOCK » et ensuite ça se termine par « S » pour « SHARED », partagé, verrou de lecture. Vous avez une attente entre une lecture qui donc attente sur une écriture, sur un verrou de type « X » exclusif, verrou d’écriture. Dans ce cas-là, le mode RCSI peut vous aider.

SQL Server 2016 : Maintenance des progiciels tiers

Exploitez les fonctionnalités de SQL Server afin de diminuer les problèmes, et améliorer les performances des progiciels. Faites face à ce problème très souvent rencontré !

1h16 (15 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Date de parution :4 août 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 !