Heim  >  Artikel  >  Datenbank  >  So implementieren Sie die MySQL-Transaktionssicherheit

So implementieren Sie die MySQL-Transaktionssicherheit

PHPz
PHPznach vorne
2023-05-29 10:04:071303Durchsuche

Transaktionssicherheitstransaktion

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 )

Grundprinzip der Transaktion

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

Automatische Transaktion

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.
  • Manuell Der Beginn, die Verarbeitung und das Ende einer Transaktion

    erfordern, dass Benutzer manuell Transaktionsanweisungen senden, um eine
  • Manuelle Transaktion zu erreichen Anweisungen

    mysql> show variables like 'autocommit';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | autocommit    | ON    |
    +---------------+-------+
    -- 关闭自动事务
    set autocommit = off;
    
    mysql> show variables like 'autocommit';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | autocommit    | OFF   |
    +---------------+-------+

    Verwendung von Transaktionen
  • -- 客户端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)
Rollback-Punkt

Wenn es eine Reihe von Transaktionsvorgängen gibt und die Schritte wie folgt aussehen: Wenn sie erfolgreich sind, besteht keine Notwendigkeit, von vorne zu beginnen. Sie können eine Markierung (Rollback-Punkt) festlegen Wenn es später zu einem Fehler kommt, können Sie zur Position dieser Markierung zurückkehren.

-- 1、开启事务,从这条语句开始,后面所有的语句都不会直接写入到数据表,保存在事务日志中
start transaction 
-- 2、事务处理,多个指令构成
-- 3、事务提交,结束事务
commit / rollback

Während einer Transaktion können Sie bei vielen Schritten mehrere Rollback-Punkte festlegen.

Atomizität Eine Transaktion ist eine unteilbare Arbeitseinheit, entweder alle sind erledigt oder keine ist erledigt

Konsistenztransaktionen müssen dazu dienen, die Datenbank von einem Konsistenzzustand in einen anderen Konsistenzzustand zu ändern

Isolation Die Ausführung Eine Transaktion kann nicht durch andere Transaktionen beeinträchtigt werden. Die Daten werden gesperrt.

Persistenz und Haltbarkeit. Sobald eine Transaktion übermittelt wird, sind ihre Änderungen an den Daten in der Datenbank dauerhaft.

  • Wenn ein Index verwendet wird In dieser Bedingung wird ein Datensatz isoliert; andernfalls wird durch den vollständigen Tabellenabruf die gesamte Tabelle gesperrt

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen