Ob MySQL beim Ausführen von Vorgängen wie dem Einfügen ein Commit durchführen muss, hängt von Ihrer Speicher-Engine ab. Wenn es sich um eine Engine handelt, die keine Transaktionen wie Myisam unterstützt, ist das Commit nicht wirksam.
Empfohlener Kurs: MySQL-Tutorial.
Wenn es sich um eine Engine handelt, die Transaktionen unterstützt, wie z. B. innodb, müssen Sie wissen, ob Ihre Transaktion die automatische Übermittlung von Transaktionen (d. h. Commit) unterstützt.
Um zu sehen, ob Ihre Datenbank dies unterstützt automatisch festgeschrieben, Sie können mysql> verwenden, um Variablen wie „%autocommit%“ anzuzeigen. Wenn diese Option deaktiviert ist, ist eine manuelle Festschreibung erforderlich (die Befehlszeile kann direkt „festgeschrieben“ werden). , andernfalls wird es automatisch festgeschrieben.
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 ON gesetzt ist, wird nach der Ausführung der Anweisungen zum Einfügen, Ändern und Löschen das
System wird automatisch einen Commit durchführen, bei dem es sich um einen automatischen Commit handelt. Das Format ist: SQL>SET AUTOCOMMIT ON;
Seien Sie vorsichtig, wenn Sie diese beiden Befehle COMMIT / ROLLBACK 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 Datengeschwindigkeit verbessert Abfrage.)
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.
Das obige ist der detaillierte Inhalt vonMuss MySQL einen Commit durchführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!