Uhla lwemibhalo ye-athikili
MySQL databaseUkuhlukaniswa kokwenziwayo kokubuyisela emuva/umqondo ovulekile/isitatimende se-php sokucubungula izinga
MySQL Izindaba
Ukuthengiselana kwe-MySQL kusetshenziswa kakhulu ukucubungula idatha ngenani elikhulu lemisebenzi kanye nobunzima obuphezulu.Isibonelo, ohlelweni lokuphatha abasebenzi, uma ususa umuntu, udinga ukususa kokubili ulwazi oluyisisekelo lomuntu kanye nolwazi oluhlobene nomuntu, njengamabhokisi eposi, izindatshana, njll. Ngale ndlela, lezi zitatimende zokusebenza kwesizindalwazi. yakha ukuthengiselana!
- Okwenziwayo kusekelwa ku-MySQL kuphela kusizindalwazi noma amathebula asebenzisa injini yolwazi lwe-Innodb.
- Ukucubungula okwenziwayo kungasetshenziswa ukuze kugcinwe ubuqotho besizindalwazi, kuqinisekiswe ukuthi amaqoqo ezitatimende ze-SQL asetshenziswa zonke noma azikho ezisetshenziswayo.
- Okwenziwayo kusetshenziselwa ukuphatha ukufaka, ukubuyekeza, ukususa izitatimende
Ngokuvamile, okwenziwayo kufanele kuhlangabezane nezimo ezi-4 (ACID): I-Atomicity (i-atomicity), Ukuvumelana (ukuzinza), Ukuhlukaniswa (ukuzihlukanisa), Ukuqina (ukuthembeka)
- 1,I-Atomicity yezentengiselwano:Isethi yemisebenzi ephumelela noma ehoxiswayo.
- 2,ukuzinza:Kukhona idatha engekho emthethweni (imikhawulo yokhiye bangaphandle nokunye okunjalo), futhi umsebenzi uyahoxiswa.
- 3,Ukuzihlukanisa:Okwenziwayo kusebenza ngokuzimela.Uma umphumela wokwenziwe uthinta okunye okwenziwayo, okunye ukuthengiselana kuzohoxiswa.Ukuhlukaniswa okungu-100% kokuthengiselana ngezindleko zejubane.
- 4,ukwethembeka:Ngemuva kokuphahlazeka kwesoftware nehardware, umshayeli wethebula ledatha le-InnoDB uzosebenzisa ifayela lokungena ukuze akhe kabusha futhi alilungise.Ukuthembeka nesivinini esiphezulu akukwazi ukuba nakho kokubili, inketho ye-innodb_flush_log_at_trx_commit inquma ukuthi ukulondoloza nini ukuthengiselana kulogi.
Ngaphansi kwezilungiselelo ezizenzakalelayo zomugqa womyalo we-MySQL, ukuthengiselana kwenziwa ngokuzenzakalelayo, okungukuthi, ukusebenza kwe-COMMIT kuzokwenziwa ngokushesha ngemva kokukhishwa kwesitatimende se-SQL.Ngakho-ke, ukuze uvule umsebenzi ngokusobala kufanele usebenzise umyalo othi BEGIN noma START TRANSACTION, noma ukhiphe umyalo SET AUTOCOMMIT=0, ukuze ukhubaze ukusetshenziswa kokuzibophezela okuzenzakalelayo kweseshini yamanje.
Isitatimende sokulawula okwenziwayo:
- QALA noma QALA UKUHLELA; qala umsebenzi ngokucacile;
- ZINIKELA; YENZA UMSEBENZI nakho kungasetshenziswa, kodwa kokubili kuyalingana. I-COMMIT yenza umsebenzi futhi yenza zonke izinguquko ezenziwe kusizindalwazi zibe unomphela;
- ROLLBACK; kungenzeka ukusebenzisa i-ROLLBACK WORK, kodwa kokubili kuyalingana.I-Rollback imisa umsebenzi womsebenzisi futhi ihlehlise zonke izinguquko ezingaphoqelekile eziqhubekayo;
- Isihlonzi se-SAVEPOINT; I-SAVEPOINT ivumela ukudala indawo yokulondoloza ekwenziweni, futhi kungase kube nama-SAVEPOINT amaningi kumsebenzi;
- KHIPHA isihlonzi se-SAVEPOINT; susa indawo yokugcina umsebenzi, lapho ingekho indawo yokulondoloza eshiwo, ukwenza isitatimende kuyokwenza okuhlukile;
- BUYELA KUSIhlonzi, buyisela okwenziwayo endaweni;
- SET TRANSACTION; isetshenziselwa ukusetha izinga lokuhlukaniswa lomsebenzi. Injini yesitoreji ye-InnoDB ihlinzeka ngamaleveli okuhlukanisa okwenziwayo okuthi FUNDA OKUNGAZINIKELE, FUNDA OKUZINIKELE, OKUPHINDA OKUFUNDILE, kanye ne-SERIALIZABLE.
Kunezindlela ezimbili eziyinhloko zokucubungula ukuthengiselana kwe-MYSQL:
1. Sebenzisa u-QALA, u-ROLLBACK, ZINIKELA ukuze uzuze
- QALA qala umsebenzi
- I-ROLLBACK ukubuyisela emuva umsebenzi
- IKOMIT Ukuqinisekiswa kokwenziwe
2. Sebenzisa i-SET ngokuqondile ukuze uguqule imodi yokuzibophezela okuzenzakalelayo ye-MySQL:
- SET OKUZENZAKALELAYO=0 Khubaza ukuzibophezela okuzenzakalelayo
- SET OKUZENZAKALELAYO=1 Vula ukuzibophezela okuzenzakalelayo
ukuhlolwa kokuthengiselana
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>
Ukusebenzisa I-Transaction Instances ku-PHP
I-MySQL ORDER NGOKUHLOLA:
<? 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); ?>
I-Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) wabelane nge-"MySQL Database Transaction Rollback Isolation/Open Concept/Level Processing of PHP Statements", okuwusizo kuwe.
Siyakwamukela ukwabelana ngesixhumanisi salesi sihloko:https://www.chenweiliang.com/cwl-494.html
Uyemukelwa esiteshini seTelegram sebhulogi ka-Chen Weiliang ukuze uthole izibuyekezo zakamuva!
📚 Lo mhlahlandlela uqukethe inani elikhulu, 🌟Leli ithuba eliyivelakancane, ungaphuthelwa! ⏰⌛💨
Yabelana futhi uthanda uma uthanda!
Ukwabelana kwakho nokuthanda kwakho kuyisisusa sethu esiqhubekayo!