22-03-2011, 09:48 PM
Je pencherai plutôt pour un deadlock vu le contexte et les symptômes. Pour expertiser plus loin, il faudrait connaître le contenu de la fonction resolution_actions_non_resolues notamment les ordres INSERT/UPDATE/DELETE qui la contiennent.
Sinon, pour générer un deadlock et donc "bloquer" la base de données, c'est très simple, il suffit de:
* sur une transaction A, faire une MAJ d'une table X
* sur une transaction B, faire une MAJ d'une table Y
* sur la transaction A, faire une MAJ de la table X
* sur la transaction B, faire une MAJ de la table Y
La transaction A attend que la table X soit libéré (commit ou rollback de B) pour continuer son travail et faire son commit/rollback.
Et la transaction B attend que la table Y soit libéré par A pour continuer son travail et faire son commit/rollback.
Ceci est valable si la gestion des verrous est positionné sur la table; normalement elle devrait pouvoir être mise au niveau des occurrences. Je ne connais pas assez MySQL pour connaitre son fonctionnement précis la dessus.
L'autre point important, c'est la taille des transactions et la durée de celles-ci: il faut qu'elles soient le plus concis et rapide possible.
Sinon, pour générer un deadlock et donc "bloquer" la base de données, c'est très simple, il suffit de:
* sur une transaction A, faire une MAJ d'une table X
* sur une transaction B, faire une MAJ d'une table Y
* sur la transaction A, faire une MAJ de la table X
* sur la transaction B, faire une MAJ de la table Y
La transaction A attend que la table X soit libéré (commit ou rollback de B) pour continuer son travail et faire son commit/rollback.
Et la transaction B attend que la table Y soit libéré par A pour continuer son travail et faire son commit/rollback.
Ceci est valable si la gestion des verrous est positionné sur la table; normalement elle devrait pouvoir être mise au niveau des occurrences. Je ne connais pas assez MySQL pour connaitre son fonctionnement précis la dessus.
L'autre point important, c'est la taille des transactions et la durée de celles-ci: il faut qu'elles soient le plus concis et rapide possible.