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

Hvordan afgør jeg, om jeg har uforpligtende skrivninger i en MySQL-transaktion?

Dette er et ret interessant spørgsmål. Jeg tror ikke, der er en bestemt måde at afgøre, om udstedelse af commit vil eller ikke vil gøre en forskel i den session, du kører.

Du kan se transaktioner med show innodb status eller vis motorens innodb-status men jeg tror ikke, du kan udstede commit på de transaktioner.

INNODB_TRX tabel i informationsskema vil vise transationer, der udføres i øjeblikket:https://dev.mysql.com/doc/refman/5.5/en/innodb-trx-table.html og igen er der ikke meget du kan gøre for at tvinge dem. Du kan rulle dem tilbage ved at dræbe den tilknyttede proces.

Hvis du kører en transaktion ved hjælp af START TRANSAKTION i en lagret procedure kan du håndtere commit og rollback manuelt. Du kan endda indstille autocommit til 0 for at kontrollere, hvornår der skal rulles tilbage, og hvornår der skal forpligtes.




  1. Vil UUID som primær nøgle i PostgreSQL give dårlig indeksydelse?

  2. Hvordan gemmer jeg en BIGINT i MySQL ved hjælp af PDO?

  3. Brug af en forespørgsel resulterer i en anden forespørgsel

  4. Indsæt erklæring, der kontrollerer for duplikat før indsættelse