Heim  >  Artikel  >  Datenbank  >  Muss MySQL ein Commit durchführen?

Muss MySQL ein Commit durchführen?

WBOY
WBOYOriginal
2022-04-27 19:04:334589Durchsuche

Ob in MySQL ein Commit erforderlich ist, hängt von der Speicher-Engine ab: 1. Wenn es sich um eine Speicher-Engine handelt, die keine Transaktionen unterstützt, wie z. B. Myisam, müssen Sie kein Commit verwenden. 2. Wenn es sich um eine Speicher-Engine handelt, die keine Transaktionen unterstützt Unterstützt Transaktionen wie Innodb. Sie müssen wissen, ob die Transaktion automatisch festgeschrieben wird, daher muss Festschreiben verwendet werden.

Muss MySQL ein Commit durchführen?

Die Betriebsumgebung dieses Tutorials: Windows10-System, MySQL8.0.22-Version, Dell G3-Computer.

Erfordert MySQL ein Commit?

Ob MySQL beim Hinzufügen, Löschen und Ändern ein Commit erfordert, hängt von Ihrer Speicher-Engine ab.

  • Wenn es sich um eine Engine handelt, die keine Transaktionen unterstützt, wie z. B. myisam, hat dies keine Auswirkung, unabhängig davon, ob sie festgeschrieben ist oder nicht.

  • Wenn es sich um eine Engine handelt, die Transaktionen unterstützt, wie z. B. innodb, müssen Sie wissen, ob das Ding die automatische Übermittlung von Transaktionen (d. h. Festschreiben) unterstützt.

Um zu sehen, ob Ihre Datenbank automatisch festgeschrieben wird, können Sie

verwenden
mysql> show variables like '%autocommit%';

um zu überprüfen, ob Wenn es ausgeschaltet ist, wird es nicht automatisch festgeschrieben und erfordert einen manuellen Festschreibungsvorgang (Sie können den Befehl „commit;“ direkt in der Befehlszeile eingeben), andernfalls wird es automatisch festgeschrieben.

Erweiterte Kenntnisse:

Es gibt drei Arten übermittelter Daten: explizite Übermittlung, implizite Übermittlung und automatische Übermittlung.

Diese drei Typen werden im Folgenden erklärt.

Explizite Übermittlung

Die direkt mit dem COMMIT-Befehl abgeschlossene Übermittlung ist eine explizite Übermittlung.

Implizite Übermittlung

Eine indirekt mithilfe von SQL-Befehlen abgeschlossene Übermittlung ist eine implizite Übermittlung. Diese Befehle sind:

ALTER, AUDIT, COMMENT, CONNECT, CREATE, DISCONNECT, DROP, EXIT, GRANT, NOAUDIT, QUIT, REVOKE, RENAME.

Automatische Übermittlung

Wenn AUTOCOMMIT auf EIN gesetzt ist, führt das

System nach der Ausführung der Anweisungen zum Einfügen, Ändern und Löschen automatisch eine Übermittlung durch, was einer automatischen Übermittlung entspricht. Das Format ist: SQL>SET AUTOCOMMIT ON

COMMIT / ROLLBACK Seien Sie vorsichtig, wenn Sie diese beiden Befehle verwenden. COMMIT/ROLLBACK werden nach der Ausführung von DML-Anweisungen (INSERT/DELETE/UPDATE/SELECT) verwendet. Nachdem die DML-Anweisung ausgeführt wurde, werden die verarbeiteten Daten im Rollback-Segment abgelegt (mit Ausnahme der SELECT-Anweisung) und warten darauf, dass der Benutzer COMMIT/ROLLBACK ausführt im Rollback-Segment platziert werden. Die Daten im Segment werden gelöscht.

(Nachdem die SELECT-Anweisung ausgeführt wurde, werden die Daten im gemeinsam genutzten Pool gespeichert. Wenn dieselben Daten anderen zur Abfrage bereitgestellt werden, werden sie direkt aus dem gemeinsam genutzten Pool extrahiert, ohne dass sie aus der Datenbank extrahiert werden müssen, was die Geschwindigkeit verbessert der Datenabfrage.)

Alle DML-Anweisungen müssen explizit übermittelt werden, d. h. COMMIT muss ausgeführt werden, nachdem die DML-Anweisung ausgeführt wurde. Andere, wie etwa DDL-Anweisungen, werden implizit übermittelt. Mit anderen Worten: Nach der Ausführung dieser Nicht-DML-Anweisungen hat die Datenbank bereits einen impliziten Commit durchgeführt, z. B. CREATE TABLE. Nach der Ausführung des Skripts wurde die Tabelle erstellt und Sie müssen keinen expliziten Commit mehr durchführen.

Empfohlenes Lernen: MySQL-Video-Tutorial

Das obige ist der detaillierte Inhalt vonMuss MySQL ein Commit durchführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn