Papa Kuhikuhi ʻatikala
MySQL waihonaʻO ka hoʻokaʻawale ʻana o ka hoʻihoʻi ʻana o ka ʻoihana/manaʻo wehe/ka hoʻoponopono pae ʻana i nā ʻōlelo php
MySQL Kālā
Hoʻohana nui ʻia nā kālepa MySQL e hoʻoponopono i ka ʻikepili me nā hana nui a me ka paʻakikī kiʻekiʻe. No ka laʻana, ma ka ʻōnaehana hoʻokele limahana, inā ʻoe e holoi i kahi kanaka, pono ʻoe e holoi i ka ʻike kumu o ke kanaka, a holoi pū i ka ʻike e pili ana i ke kanaka, e like me ka pahu leta, nā ʻatikala, a pēlā aku. ʻO nā ʻōlelo hana he hana.
- Ma MySQL, ʻo nā ʻikepili a i ʻole nā papa e hoʻohana ana i ka ʻenehana waihona ʻikepili Innodb e kākoʻo i nā kālepa.
- Hiki ke hoʻohana ʻia ka hoʻoili ʻana no ka mālama ʻana i ka pono o ka waihona a hōʻoia i ka pau ʻana o nā ʻōlelo SQL a pau ʻole a i ʻole.
- Hoʻohana ʻia nā hana e hoʻokele i ka hoʻokomo, hoʻohou, holoi i nā ʻōlelo
Ma ka ʻōlelo maʻamau, pono e hoʻokō nā hana i ʻehā mau kūlana (ACID): Atomicity (atomicity), Consistency (stability), Isolation (hoʻokaʻawale), Durability (reliability)
- 1 、Atomicity o nā hana:Ua holomua a hoʻihoʻi ʻia paha kahi pūʻulu o nā hana.
- 2 、Paʻa:Loaʻa nā ʻikepili ʻae ʻole (nā kī kī haole a me nā mea like), a hoʻihoʻi ʻia ke kālepa.
- 3 、Kaʻawale:Holo kūʻokoʻa nā hana. Inā pili ka hopena o kekahi hana i nā hana ʻē aʻe, e hoʻihoʻi ʻia nā hana ʻē aʻe. ʻO 100% ka hoʻokaʻawale ʻana o nā kālepa e koi ai i ka wikiwiki.
- 4 、hilinaʻi:Ma hope o ka hāʻule ʻana o ka polokalamu a i ʻole ka lako lako, e hoʻohana ka mea hoʻokele papa ʻikepili InnoDB i ka faila log e hana hou a hoʻololi. ʻAʻole kūpono ka hilinaʻi a me ka wikiwiki kiʻekiʻe. ʻO ke koho innodb_flush_log_at_trx_commit e hoʻoholo i ka wā e mālama ai i nā kālepa i ka log.
Ma lalo o nā hoʻonohonoho paʻamau o ka laina kauoha MySQL, hoʻokō ʻia nā hana, ʻo ia hoʻi, e hana koke ʻia ka hana COMMIT ma hope o ka hoʻokō ʻana i ka ʻōlelo SQL. No laila, no ka hoʻomaka ʻana i kahi kālepa, pono ʻoe e hoʻohana i ke kauoha BEGIN a i ʻole START TRANSACTION, a i ʻole e hoʻokō i ke kauoha SET AUTOCOMMIT=0 e hoʻopau i ka hoʻohana ʻana i ka commit maʻalahi no ke kau o kēia manawa.
ʻŌlelo hoʻomalu pāʻoihana:
- BEGIN a i ʻole START TRANSACTION; e hoʻomaka i kahi kālepa;
- COMMIT; hiki iā ʻoe ke hoʻohana i ka COMMIT WORK, akā ua like lākou. Hana ʻo COMMIT i ka hana a hoʻololi i nā hoʻololi a pau i hana ʻia i ka waihona waihona i mau loa;
- ROLLBACK; hiki iā ʻoe ke hoʻohana i ka ROLLBACK WORK, akā ua like lākou. E hoʻopau ʻo Rollback i ka hana a ka mea hoʻohana a hoʻopau i nā hoʻololi āpau ʻole i ka holomua;
- SAVEPOINT mea hōʻike; SAVEPOINT ʻae i ka hana ʻana i kahi savepoint ma kahi kālepa, a hiki ke loaʻa nā SAVEPOINT he nui i kahi kālepa;
- RELEASE SAVEPOINT mea hoʻomaopopo; holoi i ka wahi mālama o kahi kālepa. Inā ʻaʻohe wahi mālama i ʻōlelo ʻia, e hoʻokō ʻia kēia ʻōlelo e hoʻolei i kahi ʻokoʻa;
- ROLLBACK I ka mea hōʻike; e hoʻihoʻi i ke kālepa i kahi kikoʻī;
- SET TRANSACTION; hoʻohana ʻia e hoʻonohonoho i ka pae kaʻawale o ke kālepa. ʻO nā pae hoʻokaʻawale kālepa i hāʻawi ʻia e ka ʻenekini mālama mālama InnoDB he READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ a me SERIALIZABLE.
ʻElua mau ala nui no ka hoʻoili ʻana i ke kālepa MYSQL:
1. E hoʻohana i ka BEGIN, ROLLBACK, COMMIT e hoʻokō
- BEGIN hoʻomaka i kahi kālepa
- HOOLAHA ka hoʻihoʻi ʻana o ka hana
- KOMIT hōʻoia hoʻopaʻa ʻana
2. E hoʻohana pololei i ka SET e hoʻololi i ke ʻano hana auto-commit o MySQL:
- SETAUTOCOMMIT=0 Hoʻopau i ka hoʻouna ʻakomi
- SETAUTOCOMMIT=1 E ho'ā i ka hoʻouna 'akomi
Ka hoao ana
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>
Ke hoʻohana nei i nā manawa kālepa ma PHP
MySQL ORDER MA ka ho'āʻo:
<? 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/ ) kaʻana like "MySQL Database Transaction Rollback Isolation/Opening Concept/Level Processing PHP Statement", he mea kōkua ia iā ʻoe.
Welina mai e kaʻana like i ka loulou o kēia ʻatikala:https://www.chenweiliang.com/cwl-494.html
Welina mai i ke kahawai Telegram o ka moʻomanaʻo ʻo Chen Weiliang e kiʻi i nā mea hou loa!
📚 He waiwai nui kēia alakaʻi, 🌟He manawa kakaikahi kēia, mai poina! ⏰⌛💨
Kaʻana like a like inā makemake ʻoe!
ʻO kāu kaʻana like a me kou makemake ʻo kā mākou hoʻoikaika mau!