03-01-2013, 12:08 PM
Le dead lock, c'est quand tu as 2 transactions qui s'autoblock. C'est un peu plus compliqué que ce que tu signales.
Par exemple,
Trans1 modifie table A puis table B
Trans2 modifie table B puis table A
Tu lances les 2 en même temps.
Trans1 lock la table A
Trans2 lock la table B
Trans1 veut modifier la table B ... comme elle est lockée, elle attend.
Trans2 veut modifier la table A ... comme elle est lockée, elle attend.
Et là, tu peux attendre longtemps avant que le système comprenne comment résoudre. Et peut importe tes procédures de rollback.
Dans ton exemple, je cite :
>>> 1) une transaction est lancée, elle lock des tables en posant des verrous
>>> 2) une autre transaction est lancée alors que la premiere n'est pas terminée sur la table lockée
>>> 3) et bang! dealock
Dès que la première transaction est finie, tout se décoince ... C'est d'ailleurs l'utilité des Locks en base de données.
Je t'ai peut-être aidé mieux appréhender ton problème.
kéké
Par exemple,
Trans1 modifie table A puis table B
Trans2 modifie table B puis table A
Tu lances les 2 en même temps.
Trans1 lock la table A
Trans2 lock la table B
Trans1 veut modifier la table B ... comme elle est lockée, elle attend.
Trans2 veut modifier la table A ... comme elle est lockée, elle attend.
Et là, tu peux attendre longtemps avant que le système comprenne comment résoudre. Et peut importe tes procédures de rollback.
Dans ton exemple, je cite :
>>> 1) une transaction est lancée, elle lock des tables en posant des verrous
>>> 2) une autre transaction est lancée alors que la premiere n'est pas terminée sur la table lockée
>>> 3) et bang! dealock
Dès que la première transaction est finie, tout se décoince ... C'est d'ailleurs l'utilité des Locks en base de données.
Je t'ai peut-être aidé mieux appréhender ton problème.
kéké