Κατάλογος άρθρου
Βάση δεδομένων MySQLΑπομόνωση επαναφοράς συναλλαγής/ανοιχτή έννοια/δήλωση php επεξεργασίας επιπέδου
MySQL Υποθέσεις
Οι συναλλαγές MySQL χρησιμοποιούνται κυρίως για την επεξεργασία δεδομένων με μεγάλο όγκο λειτουργιών και υψηλή πολυπλοκότητα.Για παράδειγμα, στο σύστημα διαχείρισης προσωπικού, εάν διαγράψετε ένα άτομο, πρέπει να διαγράψετε τόσο τις βασικές πληροφορίες του ατόμου όσο και τις πληροφορίες που σχετίζονται με το άτομο, όπως γραμματοκιβώτια, άρθρα κ.λπ. Με αυτόν τον τρόπο, αυτές οι δηλώσεις λειτουργίας της βάσης δεδομένων αποτελούν συναλλαγή!
- Οι συναλλαγές υποστηρίζονται στη MySQL μόνο για βάσεις δεδομένων ή πίνακες που χρησιμοποιούν τη μηχανή βάσης δεδομένων Innodb.
- Η επεξεργασία συναλλαγών μπορεί να χρησιμοποιηθεί για τη διατήρηση της ακεραιότητας της βάσης δεδομένων, διασφαλίζοντας ότι οι παρτίδες των δηλώσεων SQL είτε εκτελούνται όλες είτε καμία από αυτές δεν εκτελείται.
- Οι συναλλαγές χρησιμοποιούνται για τη διαχείριση της εισαγωγής, ενημέρωσης, διαγραφής δηλώσεων
Σε γενικές γραμμές, οι συναλλαγές πρέπει να πληρούν 4 προϋποθέσεις (ACID): Ατομικότητα (ατομικότητα), Συνέπεια (σταθερότητα), Απομόνωση (απομόνωση), Ανθεκτικότητα (αξιοπιστία)
- 1,Ατομικότητα συναλλαγών:Ένα σύνολο συναλλαγών που είτε πετυχαίνουν είτε αποσύρονται.
- 2,σταθερότητα:Υπάρχουν παράνομα δεδομένα (περιορισμοί ξένων κλειδιών και παρόμοια) και η συναλλαγή αποσύρεται.
- 3,Απομόνωση:Οι συναλλαγές εκτελούνται ανεξάρτητα.Εάν το αποτέλεσμα μιας συναλλαγής επηρεάζει άλλες συναλλαγές, τότε οι άλλες συναλλαγές θα αποσυρθούν.100% απομόνωση των συναλλαγών σε βάρος της ταχύτητας.
- 4,αξιοπιστία:Μετά την κατάρρευση λογισμικού και υλικού, το πρόγραμμα οδήγησης πίνακα δεδομένων InnoDB θα χρησιμοποιήσει το αρχείο καταγραφής για να το ανακατασκευάσει και να το τροποποιήσει.Η αξιοπιστία και η υψηλή ταχύτητα δεν μπορούν να έχουν και τα δύο, η επιλογή innodb_flush_log_at_trx_commit καθορίζει πότε θα αποθηκεύονται οι συναλλαγές στο αρχείο καταγραφής.
Κάτω από τις προεπιλεγμένες ρυθμίσεις της γραμμής εντολών MySQL, οι συναλλαγές δεσμεύονται αυτόματα, δηλαδή η λειτουργία COMMIT θα εκτελεστεί αμέσως μετά την εκτέλεση της δήλωσης SQL.Επομένως, για να ανοίξετε ρητά μια συναλλαγή πρέπει να χρησιμοποιήσετε την εντολή BEGIN ή START TRANSACTION ή να εκτελέσετε την εντολή SET AUTOCOMMIT=0, για να απενεργοποιήσετε τη χρήση της αυτόματης δέσμευσης για την τρέχουσα περίοδο λειτουργίας.
Δήλωση ελέγχου συναλλαγών:
- ΞΕΚΙΝΗΣΤΕ ή ΞΕΚΙΝΗΣΤΕ ΤΗ ΣΥΝΑΛΛΑΓΗ, ξεκινήστε ρητά μια συναλλαγή.
- ΔΕΣΜΕΥΣΗ; ΔΕΣΜΕΥΣΗ ΕΡΓΑΣΙΑΣ μπορεί επίσης να χρησιμοποιηθεί, αλλά τα δύο είναι ισοδύναμα. Το COMMIT δεσμεύει τη συναλλαγή και καθιστά μόνιμες όλες τις τροποποιήσεις που γίνονται στη βάση δεδομένων.
- ROLLBACK, είναι δυνατή η χρήση του ROLLBACK WORK, αλλά τα δύο είναι ισοδύναμα.Η επαναφορά τερματίζει τη συναλλαγή του χρήστη και αναιρεί όλες τις μη δεσμευμένες τροποποιήσεις που βρίσκονται σε εξέλιξη.
- Αναγνωριστικό SAVEPOINT· Το SAVEPOINT επιτρέπει τη δημιουργία ενός σημείου αποθήκευσης σε μια συναλλαγή και μπορεί να υπάρχουν πολλά SAVEPOINT σε μια συναλλαγή.
- RELEEASE SAVEPOINT αναγνωριστικό, διαγράψτε ένα σημείο αποθήκευσης μιας συναλλαγής, όταν δεν υπάρχει καθορισμένο σημείο αποθήκευσης, η εκτέλεση της δήλωσης θα δημιουργήσει μια εξαίρεση.
- ROLLBACK TO αναγνωριστικό, επαναφορά της συναλλαγής στο σημείο.
- SET TRANSACTION, χρησιμοποιείται για τον καθορισμό του επιπέδου απομόνωσης της συναλλαγής. Η μηχανή αποθήκευσης InnoDB παρέχει επίπεδα απομόνωσης συναλλαγών READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ και SERIALIZABLE.
Υπάρχουν δύο κύριες μέθοδοι επεξεργασίας συναλλαγών MYSQL:
1. Χρησιμοποιήστε BEGIN, ROLLBACK, COMMIT για να επιτύχετε
- ΑΡΧΙΖΟΥΝ ξεκινήσετε μια συναλλαγή
- ΕΠΑΝΑΦΟΡΑ επαναφορά συναλλαγής
- ΔΙΑΠΡΑΤΤΩ Επιβεβαίωση συναλλαγής
2. Χρησιμοποιήστε απευθείας το SET για να αλλάξετε τη λειτουργία αυτόματης δέσμευσης της MySQL:
- ΡΥΘΜΙΣΗ ΑΥΤΟΜΑΤΗ ΕΠΙΔΟΣΗ=0 Απενεργοποιήστε την αυτόματη δέσμευση
- ΡΥΘΜΙΣΗ ΑΥΤΟΜΑΤΗ ΕΠΙΔΟΣΗ=1 Ενεργοποιήστε την αυτόματη δέσμευση
δοκιμή συναλλαγής
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>
Χρήση παρουσιών συναλλαγών στην 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); ?>
Ιστολόγιο Hope Chen Weiliang ( https://www.chenweiliang.com/ ) κοινοποίησε το "MySQL Database Transaction Rollback Isolation/Open Concept/Level Processing of PHP Statements", το οποίο είναι χρήσιμο για εσάς.
Καλώς ήρθατε να μοιραστείτε τον σύνδεσμο αυτού του άρθρου:https://www.chenweiliang.com/cwl-494.html
Καλώς ήρθατε στο κανάλι Telegram του ιστολογίου του Chen Weiliang για να λαμβάνετε τις τελευταίες ενημερώσεις!
📚 Αυτός ο οδηγός περιέχει τεράστια αξία, 🌟Αυτή είναι μια σπάνια ευκαιρία, μην τη χάσετε! ⏰⌛💨
Κοινοποιήστε και κάντε like αν σας αρέσει!
Η κοινή χρήση και τα like σας είναι το συνεχές μας κίνητρο!