Mysql
 sql >> Database >  >> RDS >> Mysql

Come faccio a determinare se ho scritture non vincolate in una transazione MySQL?

Questa è una domanda piuttosto interessante. Non credo che ci sia un modo preciso per determinare se l'emissione del commit farà o meno la differenza nella sessione in esecuzione.

Puoi vedere le transazioni con show innodb status o mostra lo stato innodb del motore ma non penso che tu possa emettere commit su quelle transazioni.

INNODB_TRX la tabella in information_schema mostrerà le transazioni attualmente in esecuzione:https://dev.mysql.com/doc/refman/5.5/en/innodb-trx-table.html e ancora non c'è molto che puoi fare per forzarli. Puoi ripristinarli interrompendo il processo associato.

Se stai eseguendo una transazione utilizzando START TRANSACTION in una stored procedure è possibile gestire il commit e il rollback manualmente. Puoi anche impostare autocommit a 0 per controllare quando eseguire il rollback e quando eseguire il commit.