Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Rollback bei Transaktion mit verlorener/getrennter Verbindung

Wenn Sie einen Client physisch trennen, senden Sie keine normale Trennung (die einen Rollback verursacht hätte) und das MySQL-Protokoll ist nicht sehr gesprächig, sodass der Server nie weiß, dass der Client nicht da ist. Ich denke, das ist ein Fehler im Protokoll im Vergleich zu anderen Datenbanksystemen, bei denen Client und Server viel mehr intern miteinander kommunizieren.

Ohnehin. Es gibt zwei Variablen, die Sie ändern könnten. Sie tun im Grunde dasselbe, aber für unterschiedliche Kunden.

Der erste ist wait_timeout und es wird von Anwendungsclients wie Java oder PHP verwendet.

Der andere ist interactive_timeout und es wird vom mysql-Client verwendet (wie in Ihren Tests)

In beiden Fällen beendet der Server die Verbindung nach einigen Sekunden und setzt dabei alle Transaktionen zurück und hebt alle Sperren auf.