Transaktionstransaktion greift auf eine Programmausführungseinheit zu, die verschiedene Datenelemente in der Datenbank aktualisieren kann
Eine Transaktion besteht aus allen Vorgängen, die zwischen dem Beginn der Transaktion (Beginn der Transaktion) und dem Ende der Transaktion (Ende der Transaktion) ausgeführt werden )
MySQL ermöglicht eine einheitliche Verwaltung von Transaktionen (Speicher-Engine innodb), speichert die vom Benutzer ausgeführten Vorgänge vorübergehend und fügt sie nicht direkt in die Datentabelle ein (Aktualisierung). Es wartet, bis der Benutzer dies bestätigt Ergebnis, bevor Sie fortfahren.
Transaktionen werden normalerweise automatisch übermittelt, oder sie können manuell übermittelt werden
Wenn der Client einen SQL-Befehl (Schreibvorgang, Hinzufügen, Löschen, Ändern) an den Server sendet, wird der Server dies tun Synchronisieren Sie das Ergebnis nach der Ausführung automatisch mit dem Server, ohne auf Benutzerfeedback zu warten.
Zwei Clients, ein Client führt SQL-Anweisungen aus und der andere Client sieht die Ausführungsergebnisse. Automatische Transaktionen über Variablen steuern , ein Client ändert die Daten und der andere Client liest die Ergebnisse. Das Ergebnis der Änderung wird nicht gefunden
Sobald die automatische Transaktion deaktiviert ist, muss der Benutzer einen Befehl zum Synchronisieren angeben oder nicht
commit commit ( Synchronisieren Sie die Datentabelle, die Transaktion wird gelöscht
Normalerweise besteht keine Notwendigkeit, automatische Transaktionen zu deaktivieren. Wenn Sie Transaktionen verwenden müssen, verwenden Sie manuelle Transaktionen.mysql> show variables like 'autocommit'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | autocommit | ON | +---------------+-------+ -- 关闭自动事务 set autocommit = off; mysql> show variables like 'autocommit'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | autocommit | OFF | +---------------+-------+
-- 客户端A关闭自动事务后操作数据 mysql> select * from my_class; +----+--------+ | id | name | +----+--------+ | 1 | 一班 | | 3 | 三班 | +----+--------+ 2 rows in set (0.01 sec) mysql> insert into my_class (name) values('四班'); Query OK, 1 row affected (0.00 sec) mysql> select * from my_class; +----+--------+ | id | name | +----+--------+ | 1 | 一班 | | 3 | 三班 | | 5 | 四班 | +----+--------+ 3 rows in set (0.00 sec) -- 客户端B看不到新增的 四班数据, mysql> select * from my_class; +----+--------+ | id | name | +----+--------+ | 1 | 一班 | | 3 | 三班 | +----+--------+ 2 rows in set (0.00 sec)
-- 1、开启事务,从这条语句开始,后面所有的语句都不会直接写入到数据表,保存在事务日志中 start transaction -- 2、事务处理,多个指令构成 -- 3、事务提交,结束事务 commit / rollback
Das obige ist der detaillierte Inhalt vonSo implementieren Sie die MySQL-Transaktionssicherheit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!