Artikelverzeichnis
MySQL-DatenbankTransaktions-Rollback-Isolation/offenes Konzept/Level-Verarbeitungs-PHP-Anweisung
MySQL Angelegenheiten
MySQL-Transaktionen werden hauptsächlich verwendet, um Daten mit einer großen Anzahl von Operationen und hoher Komplexität zu verarbeiten.Wenn Sie beispielsweise im Personalverwaltungssystem eine Person löschen, müssen Sie sowohl die grundlegenden Informationen der Person als auch die Informationen zu der Person wie Postfächer, Artikel usw. löschen. Auf diese Weise werden diese Datenbankoperationsanweisungen gelöscht eine Transaktion darstellen!
- Transaktionen werden in MySQL nur für Datenbanken oder Tabellen unterstützt, die die Innodb-Datenbank-Engine verwenden.
- Die Transaktionsverarbeitung kann verwendet werden, um die Integrität der Datenbank aufrechtzuerhalten und sicherzustellen, dass Stapel von SQL-Anweisungen entweder alle ausgeführt werden oder keiner von ihnen ausgeführt wird.
- Transaktionen werden verwendet, um Einfüge-, Aktualisierungs- und Löschanweisungen zu verwalten
Generell muss eine Transaktion 4 Bedingungen (ACID) erfüllen: Atomicity (Atomizität), Consistency (Stabilität), Isolation (Isolation), Durability (Zuverlässigkeit)
- 1. Atomizität von Transaktionen:Eine Reihe von Transaktionen, die entweder erfolgreich sind oder zurückgezogen werden.
- 2. Stabilität:Es gibt illegale Daten (Fremdschlüsseleinschränkungen und dergleichen) und die Transaktion wird zurückgezogen.
- 3. Isolation:Transaktionen laufen unabhängig voneinander.Wenn das Ergebnis einer Transaktion andere Transaktionen beeinflusst, werden andere Transaktionen zurückgezogen.100 % Isolierung von Transaktionen auf Kosten der Geschwindigkeit.
- 4. Verlässlichkeit:Nach dem Software- und Hardware-Absturz verwendet der InnoDB-Datentabellentreiber die Protokolldatei, um sie zu rekonstruieren und zu ändern.Zuverlässigkeit und hohe Geschwindigkeit können nicht beides haben, die Option innodb_flush_log_at_trx_commit bestimmt, wann Transaktionen im Protokoll gespeichert werden.
Unter den Standardeinstellungen der MySQL-Befehlszeile werden Transaktionen automatisch festgeschrieben, d. h. die COMMIT-Operation wird unmittelbar nach Ausführung der SQL-Anweisung ausgeführt.Um eine Transaktion explizit zu öffnen, müssen Sie daher den Befehl BEGIN oder START TRANSACTION verwenden oder den Befehl SET AUTOCOMMIT=0 ausführen, um die Verwendung des automatischen Festschreibens für die aktuelle Sitzung zu deaktivieren.
Transaktionskontrollaussage:
- BEGIN oder START TRANSACTION; explizit eine Transaktion starten;
- COMMIT; COMMIT WORK kann ebenfalls verwendet werden, aber beide sind gleichwertig. COMMIT schreibt die Transaktion fest und macht alle an der Datenbank vorgenommenen Änderungen dauerhaft;
- ROLLBACK; es ist möglich, ROLLBACK WORK zu verwenden, aber die beiden sind gleichwertig.Rollback beendet die Transaktion des Benutzers und macht alle nicht festgeschriebenen Änderungen rückgängig;
- SAVEPOINT-Kennung: SAVEPOINT ermöglicht das Erstellen eines Sicherungspunkts in einer Transaktion, und es kann mehrere SAVEPOINTs in einer Transaktion geben;
- RELEASE SAVEPOINT Identifikator; lösche einen Sicherungspunkt einer Transaktion, wenn es keinen angegebenen Sicherungspunkt gibt, wird die Ausführung der Anweisung eine Ausnahme auslösen;
- ROLLBACK TO Identifikator: Rollback der Transaktion auf den Punkt;
- SET TRANSACTION; wird verwendet, um die Isolationsstufe der Transaktion festzulegen. Die InnoDB-Speicher-Engine bietet Transaktionsisolationsstufen von READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ und SERIALIZABLE.
Es gibt zwei Hauptmethoden der MYSQL-Transaktionsverarbeitung:
1. Verwenden Sie BEGIN, ROLLBACK, COMMIT, um dies zu erreichen
- START eine Transaktion starten
- ZURÜCKSETZEN Transaktions-Rollback
- VERPFLICHTEN Transaktionsbestätigung
2. Verwenden Sie SET direkt, um den Auto-Commit-Modus von MySQL zu ändern:
- AUTOCOMMIT = 0 SETZEN Autocommit deaktivieren
- AUTOCOMMIT = 1 SETZEN Aktivieren Sie die automatische Festschreibung
Transaktionstest
mysql> use chenweiliang; Database changed mysql> CREATE TABLE chenweiliang_transaction_test( id int(5)) engine=innodb; # 创建数据表 Query OK, 0 rows affected (0.04 sec) mysql> select * from chenweiliang_transaction_test; Empty set (0.01 sec) mysql> begin; # 开始事务 Query OK, 0 rows affected (0.00 sec) mysql> insert into chenweiliang_transaction_test value(5); Query OK, 1 rows affected (0.01 sec) mysql> insert into chenweiliang_transaction_test value(6); Query OK, 1 rows affected (0.00 sec) mysql> commit; # 提交事务 Query OK, 0 rows affected (0.01 sec) mysql> select * from chenweiliang_transaction_test; +------+ | id | +------+ | 5 | | 6 | +------+ 2 rows in set (0.01 sec) mysql> begin; # 开始事务 Query OK, 0 rows affected (0.00 sec) mysql> insert into chenweiliang_transaction_test values(7); Query OK, 1 rows affected (0.00 sec) mysql> rollback; # 回滚 Query OK, 0 rows affected (0.00 sec) mysql> select * from chenweiliang_transaction_test; # 因为回滚所以数据没有插入 +------+ | id | +------+ | 5 | | 6 | +------+ 2 rows in set (0.01 sec) mysql>
Verwendung von Transaktionsinstanzen in PHP
MySQL ORDER BY-Test:
<? php $dbhost = 'localhost:3306'; // mysql服务器主机地址 $dbuser = 'root'; // mysql用户名 $dbpass = '123456'; // mysql用户名密码 $conn = mysqli_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('连接失败: ' . mysqli_error($conn)); } // 设置编码,防止中文乱码 mysqli_query($conn, "set names utf8"); mysqli_select_db( $conn, 'chenweiliang' ); mysqli_query($conn, "SET AUTOCOMMIT=0"); // 设置为不自动提交,因为MYSQL默认立即执行 mysqli_begin_transaction($conn); // 开始事务定义 if(!mysqli_query($conn, "insert into chenweiliang_transaction_test (id) values(8)")) { mysqli_query($conn, "ROLLBACK"); // 判断当执行失败时回滚 } if(!mysqli_query($conn, "insert into chenweiliang_transaction_test (id) values(9)")) { mysqli_query($conn, "ROLLBACK"); // 判断执行失败时回滚 } mysqli_commit($conn); //执行事务 mysqli_close($conn); ?>
Hoffnung Chen Weiliang Blog ( https://www.chenweiliang.com/ ) hat „MySQL Database Transaction Rollback Isolation/Open Concept/Level Processing of PHP Statements“ geteilt, was für Sie hilfreich ist.
Willkommen, um den Link dieses Artikels zu teilen:https://www.chenweiliang.com/cwl-494.html
Willkommen im Telegrammkanal von Chen Weiliangs Blog, um die neuesten Updates zu erhalten!
📚 Dieser Leitfaden enthält einen enormen Mehrwert. 🌟Dies ist eine seltene Gelegenheit, verpassen Sie sie nicht! ⏰⌛💨
Teilen und liken, wenn es euch gefällt!
Ihr Teilen und Ihre Likes sind unsere ständige Motivation!