SQL Server 2016 : Maintenance des progiciels tiers

Aborder les problématiques de blocage

Testez gratuitement nos 1250 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Vous allez faire le tour des problématiques de blocage pouvant entraîner des attentes pour les utilisateurs.
05:32

Transcription

Autre problématique, celui du blocage. Si vous avez un système qui est très sollicité en écriture comme en lecture, vous pouvez avoir des attentes sur des verrous conservés pendant l’écriture pour protéger la donnée de façon à ne pas lire des données sales. Ces attentes sont spécialement appelées des blocages parce que ce sont des attentes sur des verrous. Je vais vous en faire une brève démonstration ici. Je vais faire une modification, un update et je vais faire un update en changeant le prénom de tous les noms qui sont « Simon ». Et je vais le faire dans une transaction de façon à artificiellement allonger la durée de verrouillage. Si je ne mets pas une transaction explicite, l’update posera des verrous qui seront libérés juste à la fin de l’update parce que c’est une transaction implicite en auto commit. Mais ici je vais créer une transaction explicite, faire mon update de façon à conserver ces verrous jusqu’à je fasse un « commit » ou un « rollback ». Donc je ne vais pas lancer ceci. Et une autre session, quelqu’un d’autre en même temps essaie de lire les données, les contacts dont le nom est Simon et comme vous le voyez, il est ici toujours en train d’exécuter sa requête et il est dans un état d’attente. En fait, c’est ce qu’on appelle un blocage. C’est une attente sur la libération de verrou. Il est bloqué par quelqu’un. Si je regarde dans cette vue « sys.dm_os_waiting_tasks » pour voir spécifiquement quelles sont les tâches en train d’attendre, eh bien je vais voir que je vais avoir ici une session ID qui est ici la 57, qui attend sur des verrous et je vois quelle est la session qui bloque. Le blocking session ID est 55. Donc ça veut dire que la session 57 est bloquée par 55. C’est comme ça que vous pouvez observer grâce juste à cette petite requête si vous avez des situations de blocage. Vous voyez sur cette ligne depuis combien de temps. Alors, je vais la relancer, comme ça ça nous donnera quelque chose de bien intéressant, depuis combien de temps j’ai un « wait duration », ici en milliseconde, vous voyez, qui nous indique ici 115000 milliseconde, donc 115 secondes. Donc ça dure un petit peu ici, artificiellement bien sûr. Est-ce que je peux améliorer les choses dans ce genre de cas ? Si vous vous apercevez qu’il y a des attentes, que certains utilisateurs sont bloqués comme ça de temps en temps dans la journée à cause de ce type de verrouillage, et donc vous l’identifiez à l’aide de cette requête. Mais c’est assez simple à deviner hein. Si tout se passe plus ou moins bien mais que de temps en temps dans la journée quelqu’un est bloqué par exemple en appuyant sur un bouton, eh bien c’est peut-être une situation de blocage. Si vous avez des situations de ralentissement en permanence, ce sont des problèmes de performance. Mais si le ralentissement ou le blocage est ressenti de temps en temps de façon aléatoire, c’est probablement .ce type de situation, parce que deux personnes ont fait des requêtes en même temps, une écriture et une lecture. Donc est-ce qu’on peut agir ? Eh bien la réponse est oui. Je vais vous montrer comment. Alors avant, je vais juste vous montrer le déblocage de la situation. À un moment donné la première requête est terminée. Vous allez voir de l’autre coté à droite. Et immédiatement les verrous sont libérés et la deuxième requête peut se terminer. Pour résoudre ce type de situation, vous avez une option qui est intéressante et que vous pouvez activer sur une base de données. Cette option est disponible dans toutes les éditions de SQL Server et depuis la version 2005. Donc elle est vraiment à votre disposition. Ne l’activez pas toujours par défaut parce qu’elle a des impacts en performance. Donc vous allez l’utilisez uniquement quand vous identifiez ce type de problématique dont je viens de vous parler. Cette option, je vais vous le montrer ici. Je modifie la base de données et je lui donne une option « SET READ COMMITED SNAPSHOT ». Je vais vous expliquer. Je vais vous montrer également graphiquement où ça se trouve dans « Propriétés » d’une base de données. Voyez je suis dans « PachDataFormation » ici. Je vais dans les « Options ». Je vais regarder un peu plus bas. Et vous voyez, bon c’est une traduction un peu approximative en français « Est un instantanné Read Commited », à « False ». Vous pouvez le changer ici, mais je vais le changer moi en code parce que la problématique de cette option, c’est que pour pouvoir la changer il faut avoir l’accès exclusif à la base. Donc il n’est pas possible de la changer quand on a des utilisateurs qui sont connectés à la base. Si votre progiciel est en train de fonctionner, eh bien probablement vous ne pouvez pas le changer comme ça. Il faut attendre le soir où tout le monde est déconnecté. Chez moi, je vais forcer la déconnexion. Donc ce que je vais faire, c’est ici retourner dans « Master », modifier la base de données, activer ce paramètre, et faire, ça c’est une commande d’administration qu’on peut utiliser dans certaines commande « alter database », un « Rollback Immediate », c'est-à-dire je vais déconnecter tous les utilisateurs et s’ils ont des transactions ouvertes je vais en faire un « Rollback ». Je vais les annuler. C’est donc une méthode assez brutale mais qui va me permettre ici d’y arriver. Evitez peut-être en production d’utiliser cette méthode sauf si vous êtes un peu désespéré. Alors, je vais activer la fonctionnalité et on va voir d’abord de quoi il s’agit et ensuite les conséquences pratiques.

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 !