sql >> Databasteknik >  >> RDS >> Mysql

COMMIT OR conn.setAutoCommit(true)

Du bör i allmänhet använda Connection.commit() och inte Connection.setAutoCommit(true) för att utföra en transaktion, såvida du inte vill byta från att använda transaktion till modellen 'transaktion per uttalande' av autoCommit.

Som sagt, anropar Connection.setAutoCommit(true) under en transaktion genomför transaktionen (om föraren är kompatibel med avsnitt 10.1.1 i JDBC 4.1-specifikationen). Men du bör egentligen bara göra det om du menar att stanna i autoCommit efter det, eftersom aktivering/inaktivering av autoCommit på en anslutning kan ha högre overhead på en anslutning än att bara begå (t.ex. för att den behöver växla mellan transaktionshanterare, gör ytterligare kontroller osv.).

Du bör också använda Connection.commit() och inte använda det inbyggda SQL-kommandot COMMIT . Som beskrivs i dokumentationen för anslutningen:

Saken är att kommandon som commit() och setAutoCommit(boolean) kan göra mer arbete i bakgrunden, som att stänga ResultSets och stänga eller återställa Statements . Använda SQL-kommandot COMMIT kommer att kringgå detta och eventuellt föra din drivrutin/anslutning till ett felaktigt tillstånd.



  1. PHP - hämtar förberedd stmt till klass:Klassen Fatal Error hittades inte

  2. Hur man jämför prestanda för MySQL &MariaDB med SysBench

  3. Händelser och trådar i .NET

  4. Vad betyder PÅ [PRIMÄR]?