Inter-blocage

DéfinitionInter-blocage

L'inter-blocage est le phénomène qui apparaît quand deux transactions (ou plus, mais généralement deux) se bloquent mutuellement par des verrous posés sur les données. Ces verrous empêchent chacune des transactions de se terminer et donc de libérer les verrous qui bloquent l'autre transaction. Un processus d'attente sans fin s'enclenche alors.

Les situations d'inter-blocage sont détectées par les SGBD[1] et gérées, en annulant l'une, l'autre ou les deux transactions, par un ROLLBACK système. Les méthodes utilisées sont la détection de cycle dans un graphe d'attente et la détection de délai d'attente trop long.

Synonymes : Deadlock, Blocage, Verrou mortel

DéfinitionCycle dans un graphe d'attente

Principe de détection d'un inter-blocage par détection d'un cycle dans un graphe représentant quelles transactions sont en attente de quelles transactions (par inférence sur les verrous posés et les verrous causes d'attente). Un cycle est l'expression du fait qu'une transaction A est en attente d'une transaction B qui est en attente d'une transaction A.

La détection d'un tel cycle permet de choisir une victime, c'est à dire une des deux transactions qui sera annulée pour que l'autre puisse se terminer.

Synonymes : Circuit de blocage

DéfinitionDélai d'attente

Principe de décision qu'une transaction doit être abandonnée (ROLLBACK) lorsque son délai d'attente est trop long.

Ce principe permet d'éviter les situations d'inter-blocage, en annulant une des deux transactions en cause, et en permettant donc à l'autre de se terminer.

Synonymes : Timeout

RemarqueRisque lié à l'annulation sur délai

Si le délai est trop court, il y a un risque d'annuler des transactions en situation d'attente longue, mais non bloquées.

Si le délai est trop long, il y a un risque de chute des performances en situation d'inter-blocage (le temps que le système réagisse).

La détection de cycle est plus adaptée dans tous les cas, mais plus complexe à mettre en œuvre.

RemarqueRelance automatique

Une transaction ayant été annulée suite à un inter-blocage (détection de cycle ou de délai d'attente) n'a pas commis de "faute" justifiant son annulation. Cette dernière est juste due aux contraintes de la gestion de la concurrence. Aussi elle n'aurait pas dû être annulée et devra donc être exécutée à nouveau.

Certains SGBD[1] se charge de relancer automatiquement les transactions ainsi annulées.