Qu'est-ce que le blocage dans le serveur SQL et quand il se produit? Quels sont les problèmes de blocage et comment le résoudre?
En règle générale, une impasse signifie que deux entités ou plus bloquent certaines sources et qu'aucune d'entre elles n'est en mesure de terminer, car elles bloquent les sources de manière cyclique.
Un exemple: Disons que j'ai les tables A et B, je dois faire une mise à jour dans A, puis B et je décide de les verrouiller au moment de l’utilisation (c’est un comportement vraiment stupide, mais il sert à quoi il en est maintenant) . Au même moment, quelqu'un d'autre fait la même chose dans l'ordre inverse: verrouille B d'abord, puis verrouille A.
Chronologiquement, cela se produit:
proc1: verrouiller A proc2: verrouiller B
proc1: verrou B - commence à attendre jusqu'à ce que Proc2 libère B proc2: verrou A - commence à attendre jusqu'à ce que Proc1 libère A
Il est évident que ni l'un ni l'autre ne finira. C'est une impasse.
Le trou va beaucoup plus loin, mais il ne s'agit que d'une entrée et si vous avez besoin d'en savoir plus, investissez votre temps. Dans notre université, il y a des conférences entières à ce sujet - alors ne pensez pas que lire quelques articles fait de vous un expert ;-)
Une impasse correspond à ce qui se produit lorsque deux personnes ont besoin de plusieurs ressources pour s'exécuter et lorsque certaines des ressources sont verrouillées par chacune des personnes. Cela conduit au fait que A ne peut pas exécuter sans quelque chose que B a et vice versa.
Disons que j'ai les personnes A et B. Elles doivent toutes deux exécuter deux lignes (Row1 et Row2).
La personne A ne peut pas s'exécuter car elle a besoin de Row2, la personne B ne peut pas s'exécuter car elle a besoin de Row1. Aucune des deux personnes ne pourra jamais exécuter car elles verrouillent ce dont l'autre a besoin et vice versa.
Un moyen raisonnablement simple de réduire le blocage consiste à effectuer toutes vos opérations complexes dans le même ordre. En d'autres termes, accédez à Table1 puis à Table2 dans le même ordre. Cela aidera à réduire le nombre de blocages qui se produisent.
Une impasse peut survenir lorsque deux (ou plus) transactions attendent chacune la libération des verrous détenus par l’autre.