Direttorju tal-Artikoli
database MySQLTranżazzjoni rollback iżolament/kunċett miftuħ/livell ipproċessar php dikjarazzjoni
MySQL Affarijiet
It-tranżazzjonijiet MySQL jintużaw prinċipalment biex jipproċessaw data b'ammont kbir ta 'operazzjonijiet u kumplessità għolja.Pereżempju, fis-sistema ta 'ġestjoni tal-persunal, jekk tħassar persuna, għandek bżonn tħassar kemm l-informazzjoni bażika tal-persuna kif ukoll l-informazzjoni relatata mal-persuna, bħal kaxxi tal-posta, artikoli, eċċ B'dan il-mod, dawn id-dikjarazzjonijiet tal-operat tad-database jikkostitwixxu transazzjoni!
- It-tranżazzjonijiet huma appoġġjati f'MySQL biss għal databases jew tabelli li jużaw il-magna tad-database Innodb.
- L-ipproċessar tat-tranżazzjonijiet jista 'jintuża biex tinżamm l-integrità tad-database, u jiġi żgurat li lottijiet ta' dikjarazzjonijiet SQL jiġu eżegwiti kollha jew ma jiġu esegwiti l-ebda waħda minnhom.
- It-tranżazzjonijiet jintużaw biex jimmaniġġjaw id-dikjarazzjonijiet tad-dħul, l-aġġornament, it-tħassir
B'mod ġenerali, tranżazzjoni trid tissodisfa 4 kundizzjonijiet (ACID): Atomiċità (atomiċità), Konsistenza (stabbiltà), Iżolament (iżolament), Durabilità (affidabbiltà)
- 1,Atomiċità tat-tranżazzjonijiet:Sett ta’ tranżazzjonijiet li jew jirnexxu jew jirtiraw.
- 2,stabbiltà:Hemm dejta illegali (restrizzjonijiet ewlenin barranin u affarijiet simili), u t-tranżazzjoni tiġi rtirata.
- 3,Iżolament:It-tranżazzjonijiet jimxu b'mod indipendenti.Jekk ir-riżultat ta 'tranżazzjoni jaffettwa tranżazzjonijiet oħra, allura tranżazzjonijiet oħra jiġu rtirati.100% iżolament tat-tranżazzjonijiet għad-detriment tal-veloċità.
- 4,affidabbiltà:Wara l-ħabta tas-softwer u l-ħardwer, is-sewwieq tat-tabella tad-dejta InnoDB se juża l-fajl tal-ġurnal biex jibnih mill-ġdid u jimmodifikah.L-affidabbiltà u l-veloċità għolja ma jistgħux ikollhom it-tnejn, l-għażla innodb_flush_log_at_trx_commit tiddetermina meta tissejvja t-tranżazzjonijiet fil-log.
Taħt is-settings default tal-linja ta 'kmand MySQL, it-tranżazzjonijiet huma awtomatikament impenjati, jiġifieri, l-operazzjoni COMMIT tiġi eżegwita immedjatament wara li titwettaq id-dikjarazzjoni SQL.Għalhekk, biex tiftaħ transazzjoni b'mod espliċitu trid tuża l-kmand BEGIN jew START TRANSACTION, jew tesegwixxi l-kmand SET AUTOCOMMIT=0, biex tiddiżattiva l-użu ta 'kommit awtomatiku għas-sessjoni attwali.
Dikjarazzjoni tal-kontroll tat-tranżazzjoni:
- BIDU jew IBDA TRANŻAZZJONI; ibda espliċitament tranżazzjoni;
- KOMMETT; KOMMETTI X-XOGĦOL jista' jintuża wkoll, iżda t-tnejn huma ekwivalenti. COMMIT jimpenja t-tranżazzjoni u jagħmel il-modifiki kollha li jsiru fid-database permanenti;
- ROLLBACK; huwa possibbli li tuża ROLLBACK WORK, iżda t-tnejn huma ekwivalenti.Rollback itemm it-tranżazzjoni tal-utent u jneħħi kwalunkwe modifika mhux impenjata li tkun għaddejja;
- SAVEPOINT identifikatur;SAVEPOINT jippermetti li jinħoloq savepoint fi tranżazzjoni, u jista 'jkun hemm SAVEPOINT multipli fi tranżazzjoni;
- RELEASE SAVEPOINT identifikatur; ħassar punt ta' salvataġġ ta' tranżazzjoni, meta ma jkunx hemm punt ta' salvataġġ speċifikat, l-eżekuzzjoni tad-dikjarazzjoni se tarmi eċċezzjoni;
- ROLLBACK TO identifikatur; roll back-tranżazzjoni sal-punt;
- SET TRANSACTION; użat biex jistabbilixxi l-livell ta’ iżolament tat-tranżazzjoni. Il-magna tal-ħażna InnoDB tipprovdi livelli ta 'iżolament tat-tranżazzjonijiet ta' AQRA MHUX IMPENJATA, AQRA IMPENJATA, AQRA RIPETIBBLI, u SERIALIZABLE.
Hemm żewġ metodi ewlenin tal-ipproċessar tat-tranżazzjonijiet MYSQL:
1. Uża BEGIN, ROLLBACK, COMMIT biex tikseb
- BEGIN tibda tranżazzjoni
- ROLL LURA rollback tat-tranżazzjoni
- KOMPETI konferma tat-tranżazzjoni
2. Uża SET direttament biex tibdel il-mod ta' impenn awtomatiku ta' MySQL:
- SETAUTOCOMMIT=0 Iddiżattiva l-impenn awtomatiku
- SETAUTOCOMMIT=1 Ixgħel l-awto-commit
test tat-tranżazzjoni
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>
Użu ta' Istanza ta' Tranżazzjoni f'PHP
MySQL ORDNI B'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 Blog ( https://www.chenweiliang.com/ ) qasmu "MySQL Database Transaction Rollback Isolation/Open Concept/Level Processing of PHP Statements", li huwa ta' għajnuna għalik.
Merħba biex taqsam il-link ta' dan l-artikolu:https://www.chenweiliang.com/cwl-494.html
Merħba fil-kanal Telegram tal-blog ta' Chen Weiliang biex tikseb l-aħħar aġġornamenti!
📚 Din il-gwida fiha valur kbir, 🌟Din hija opportunità rari, titlifhiex! ⏰⌛💨
Share u like jekk togħġobkom!
Il-qsim u l-likes tiegħek huma l-motivazzjoni kontinwa tagħna!