MySQL-Transaktion:
1. MySQL-Transaktionskontrollanweisung
(1). Transaktion öffnen
begin;
(3). Setzen Sie die Transaktion zurück
commit;
(4). Legen Sie fest, ob die Transaktion automatisch festgeschrieben wird
rollback;
Zum Beispiel:
set autocommit = {0 | 1}; // 0不自动提交,1自动提交
Dies ist eine einfache Transaktion zum Einfügen von Daten
begin;// 开启事务 insert into table_name values(内容); commit;// 提交事务
Dies ist eine einfache Rollback-Transaktion zum Einfügen von Daten
begin;// 开启事务 insert into table_name values(内容);// 后悔了,不想插入数据了 rollback;// 回滚,取消这次的事务操作
(1).read-uncommitted (nicht festgeschriebenen Inhalt lesen)
show variables like 'tx_isolation';
Zwei Benutzer melden sich gleichzeitig bei der Datenbank an und Die Transaktion führt jeweils Additions-, Lösch- und Änderungsvorgänge aus, und die Transaktion eines anderen Benutzers führt nur Abfragevorgänge aus. Ersterer schließt den Vorgang ab, ohne ihn festzuschreiben, und letzterer kann die Vorgangsergebnisse sehen Zu diesem Zeitpunkt werden bei der Abfrage keine anderen Ergebnisse angezeigt als beim letzten Mal (d. h. das Ergebnis ohne Operation). Dies ist das Dirty-Read-Problem
set global transaction isolation level read uncommitted;
In einer Transaktion habe ich zwei unterschiedliche Abfrageergebnisse gesehen (ähnlich wie bei Dirty Read).
set global transaction isolation level read committed;
Das heißt, in einer Transaktion sind die in dieser Transaktion abgefragten Ergebnisse immer dieselben, unabhängig davon, wie ein anderer Benutzer die Daten ändert .
set global transaction isolation level repeatable read;
3. InnoDB-Sperrmechanismus
alter table users engine = innodb;// 会造成事务的隐式提交
(2). Wenn eine Tabelle einen Primärschlüssel oder Index enthält, sperrt eine Transaktion eine bestimmte Datenzeile in der Tabelle, die sie bearbeitet, und sperrt nicht die gesamte Tabelle In dieser Tabelle ist dieses Mal nicht betroffen. Es ist zu beachten, dass die Sperre auf Zeilenebene hier eine Lückensperre ist. Das heißt, wenn Sie bestimmte Datenzeilen ändern, z. B. n Datenzeilen mit der ID < 10. = , dann id = 11 Die Daten werden ebenfalls gesperrt, was beachtet werden muss.
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Transaktionen in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!