Je rencontre parfois un problème avec mon application qui aboutit à ce que je suppose être une transaction inachevée qui n'est pas validée ni annulée. Je remarque d'abord le problème la prochaine fois que mon application essaie de démarrer une transaction dans la base de données.Déboguer longuement MySQL Transactions actives avec des structures de verrou et annuler les entrées de journal
Ma question est comment savoir quelles requêtes ont été exécutées dans la transaction mais pas encore validées, quelles tables sont affectées, etc ...? Essentiellement, cela m'aide à trouver ce qui cause le problème.
J'ai le journal binaire activé, mais selon la documentation, une transaction n'est écrite dans le journal binaire qu'une fois validée. Le journal innodb undo est supposé écrire un idbfile contenu dans le même répertoire que les binlogs, et c'est le cas, mais je ne peux pas dire que j'ai trouvé un moyen de l'analyser à cette fin.
SHOW PROCESSLIST montre ma session avec l'état de veille
VOIR INNODB STATUT:
...
...
---TRANSACTION 0 10661864, ACTIVE 4401 sec, process no, 4831, OS thread id 3023358896
3 lock struct(s), heap size 320, undo log entries 40
MySQL thread id 2, query id 2419 localhost masteruser
Trx read view will not see trx with id >= 0 10661865, sees < 0 10661865
...
...
PS J'ai la même question sur ServerFault mais je pense que cette question est quelque part entre quand! il vient à la classification, + je trouve ce site ayant une activité beaucoup plus faible que StackOverflow donc les chances d'obtenir une réponse se sentent plus élevées ici, espérons que ça va.
/Kristofer