Une serrure se produit lorsque plusieurs processus essayez d'accéder à la même ressource en même temps.
Un processus perd et doit attendre que l'autre à la fin.
Un blocage se produit lorsque le processus d'attente est toujours tenue sur une autre ressource que la première besoins avant de pouvoir terminer.
Donc, un exemple:
La ressource A et B de ressource sont utilisés par les processus X et processus Y
- X commence à utiliser A.
- X et Y essayer de démarrer à l'aide de B
- Y "gagne" et obtient B
- maintenant Y a besoin d'utiliser Un
- Un est verrouillé par X, qui est en attente pour Y
La meilleure façon d'éviter les blocages est pour éviter d'avoir des processus de croix au-dessus de cette manière. Réduire le besoin de verrouiller n'importe quoi comme beaucoup que vous le pouvez.
Dans les bases de données d'éviter de faire beaucoup de changements pour les différentes tables dans une seule opération, d'éviter les déclencheurs et de passer à optimistes/sale/nolock lit autant que possible.