1 MySQL Autocommit-Einstellungen MySQL führt standardmäßig automatisch Commits aus, was bedeutet, dass für jede DML-Anweisung (Hinzufügen, Löschen und Ändern) implizit ein Commit als separate Transaktion ausgeführt wird. Wenn der Status auf „Geschlossen“ geändert wird, muss die DML-Anweisung manuell übermittelt werden, damit sie wirksam wird. mysql> Variablen wie „autocommit“ anzeigen; +---------------+-------+ | Variablenname | Wert | +---------------+-------+ | Autocommit | EIN | +---------------+-------+ Überprüfen Sie, ob das globale Auto-Commit aktiviert ist: mysql> globale Variablen wie „autocommit“ anzeigen; +---------------+-------+ | Variablenname | Wert | +---------------+-------+ | Autocommit | EIN | +---------------+-------+ Sie können den Vorgang ein- und ausschalten, indem Sie die Autocommit-Variable ändern. Schalten Sie den Autocommit-Modus für die aktuelle Sitzung aus mysql> set autocommit=0; mysql> Variablen wie „autocommit“ anzeigen; +---------------+-------+ | Variablenname | Wert | +---------------+-------+ | Autocommit | AUS | +---------------+-------+ Das globale Autocommit ist immer noch aktiviert mysql> zeige globale Variablen wie 'autocommit'; +---------------+-------+ | Variablenname | Wert | +---------------+-------+ | Autocommit | EIN | +---------------+-------+ Globales Autocommit deaktivieren mysql> globales Autocommit = 0 festlegen; mysql> globale Variablen wie „autocommit“ anzeigen; +---------------+-------+ | Variablenname | Wert | +---------------+-------+ | Autocommit | AUS | +---------------+-------+ Wenn der MySQL-Dienst nach dem Neustart weiterhin wirksam bleiben soll, müssen Sie Systemumgebungsvariablen festlegen. MySQL 5.7 Legen Sie den Autocommit-Wert unter [mysqld] in der cnf-Konfigurationsdatei fest. [mysqld] ... automatisches Commit = 0 Steuern der automatischen Übermittlung im FrühjahrDas MySQL JDBC-Treiberpaket mysql-connector-java aktiviert standardmäßig Auto-Commit für die Sitzungsverbindung, beispielsweise der Code der Version mysql-connector-java-8.0.22: //com.mysql.cj.protocol.a.NativeServerSession.java privater Boolescher Wert autoCommit = true; Häufig verwendete Datenbankverbindungspools wie HikariCP, Druid usw. aktivieren standardmäßig auch Auto-Commit und ändern die Auto-Commit-Einstellungen der Verbindung auf „True“. com.alibaba.druid.pool.DruidAbstractDataSource.java geschützter flüchtiger Boolescher Wert defaultAutoCommit = true; ... public void initPhysicalConnection(Connection conn, Map<String, Object> variables, Map<String, Object> globalVariables) throws SQLException { wenn (conn.getAutoCommit() != defaultAutoCommit) { //Setze das Autocommit der Verbindung auf true conn.setAutoCommit(defaultAutoCommit); } ... } HikariCP initialisiert DataSource mit Autocommit, das standardmäßig auf „true“ gesetzt ist: com.zaxxer.hikari.HikariConfig.java öffentliche HikariConfig() { ... istAutoCommit = wahr; } Bei expliziten Transaktionen, die vom Transaktionsmanager PlatformTransactionManager verwaltet werden (z. B. @Transactional-Annotationsdeklarationen), wird der Auto-Commit-Modus beim Öffnen der Transaktion deaktiviert. Der Code lautet wie folgt: @Überschreiben geschützt void doBegin(Objekttransaktion, Transaktionsdefinitionsdefinition) { DataSourceTransactionObject txObject = (DataSourceTransactionObject) Transaktion; Verbindung con = null; versuchen { ........ // Wechseln Sie bei Bedarf zum manuellen Commit. Dies ist bei einigen JDBC-Treibern sehr aufwändig. // wir wollen es also nicht unnötig tun (wenn wir zum Beispiel explizit // der Verbindungspool wurde bereits so konfiguriert, dass er festgelegt wird). wenn (con.getAutoCommit()) { txObject.setMustRestoreAutoCommit(true); wenn (logger.isDebugEnabled()) { logger.debug("JDBC-Verbindung [" + con + "] auf manuelles Commit umstellen"); } //Auto-Commit-Modus ausschalten con.setAutoCommit(false); } ....... } fangen (Wurfbeispiel) { ....... } } ZusammenfassenDer Autocommit-Modus von MySQL ist standardmäßig aktiviert. Um Fehler durch manuelle DML-Operationen zu vermeiden, kann die Produktionsumgebung auf den standardmäßigen geschlossenen Zustand gesetzt werden. Im Allgemeinen sind JDBC-Verbindungspools standardmäßig aktiviert und konfigurierbar. Bei einer expliziten Transaktion wird es auf den Status „Geschlossen“ gesetzt. Eine einfache Änderung des Autocommits der Datenbankumgebung hat keine Auswirkungen auf das Verhalten des Codes. Oben finden Sie eine ausführliche Erläuterung zu MySQL und Springs Autocommit. Weitere Informationen zu MySQL Autocommit finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: XHTML-Tutorial für den Einstieg: Häufig verwendete XHTML-Tags
Inhaltsverzeichnis Vorbereitung Installieren Sie ...
Automatische Sicherung der MySQL-Datenbank per Sh...
Externer Zugriff Ports nach dem Zufallsprinzip zu...
Nachdem die Tabellenbreite auf der Seite auf width...
Ich habe viele Tutorials gelesen, aber festgestel...
Wenn wir SQL zum Extrahieren von Daten verwenden,...
1. Verwenden Sie immer :key in v-for Die Verwendu...
UPD 2020.2.26 Derzeit ist Ubuntu 20.04 LTS noch n...
Der Erste : Code kopieren Der Code lautet wie folg...
1. Overlay-Übersicht Overlay bedeutet Überlagerun...
Vorwort Beim Schreiben von Code stoßen wir gelege...
Inhaltsverzeichnis Vorwort Bedarfsanalyse Mysql-B...
<br />Wenn wir über Navigation sprechen, geh...
<br />Original-URL: http://www.lxdong.com/po...
Als ich mein primäres Betriebssystem von Windows ...