title: Debuggin long running MySQL Active transactions with lock structs and undo log entries
body: <p>I occasionally run into a problem with my application which results in a what I guess is an unfinished transaction that is not committed nor rolled back. I first notice the problem the next time my application tries to start a transaction to the database.</p>
  
  <p>My question is how to find out what queries have been executed within the transaction but not yet committed, what tables are affected, etc...? Basically helping me to track down what causes the problem.</p>
  
  <p>I have the binary log enabled but according to documentation, a transaction is only written to the binary log when committed.</p>
  
  <p>The innodb undo log is supposed to be written a idbfile contained in the same directory as the binlogs, and it is, but I can't say I've found any way of parsing it for this purpose.</p>
  
  <p><strong>SHOW PROCESSLIST</strong> shows my session with status SLEEP</p>
  
  <p><strong>SHOW INNODB STATUS</strong>:</p>
  
  <pre><code>...
  ...
  ---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 &gt;= 0 10661865, sees &lt; 0 10661865
  ...
  ...
  </code></pre>
  
  <p>!PS I have the same question on ServerFault but I guess this question is somewhere in between when it comes to classification, + I find that site having a much lower activity than StackOverflow so the chances of getting an answer feels higher here, hope this ok.</p>
  
  <p>/Kristofer</p>