Tuhinga Tuhinga
pātengi raraunga MySQLTauwhitinga whakamuri wehenga/aria tuwhera/tuhinga taumata tauākī php
MySQL Take
Ko nga whakawhitinga MySQL e whakamahia ana ki te tukatuka i nga raraunga me te nui o nga mahi me te tino uaua.Hei tauira, i roto i te punaha whakahaere kaimahi, mena ka mukua e koe tetahi tangata, me whakakore e koe nga korero taketake o te tangata me nga korero e pa ana ki te tangata, penei i nga pouaka pouaka, tuhinga, aha atu. he tauwhitinga!
- Ka tautokohia nga tauwhitinga i MySQL anake mo nga papaunga raraunga, nga ripanga ranei e whakamahi ana i te miihini patengi raraunga Innodb.
- Ka taea te whakamahi i te tukatuka tauwhitinga ki te pupuri i te pono o te putunga raraunga, me te whakarite kei te mahia katoatia nga puranga o nga korero SQL, karekau ranei e mahia.
- Ka whakamahia nga whakawhitinga ki te whakahaere i te whakauru, te whakahou, te whakakore i nga korero
Ko te tikanga, me tutuki te tauwhitinga ki nga tikanga e 4 (ACID): Atomicity (ngota), Totonutanga (pumautanga), Wehewehenga (motuhake), Maamaa (pono)
- 1,Te ngota o nga tauwhitinga:He huinga tauwhitinga, kua angitu, kua tangohia ranei.
- 2,pūmautanga:He raraunga kore ture (nga herenga matua o tawahi me nga mea pera), ka tangohia te tauwhitinga.
- 3,Wehenga:Ka whakahaere takitahi nga tauwhitinga.Mena ka pa te hua o te tauwhitinga ki etahi atu tauwhitinga, ka tangohia etahi atu whakawhitinga.100% te wehe i nga whakawhitiwhitinga, me tere te patunga tapu.
- 4,pono:I muri i te tukinga o te rorohiko me te taputapu, ka whakamahia e te taraiwa ripanga raraunga InnoDB te konae rangitaki ki te hanga ano me te whakarereke.Ko te pono me te tere tere kaore e taea te whai i nga mea e rua, ko te innodb_flush_log_at_trx_commit kōwhiringa ka whakatau i te wa e penapena ai nga whakawhitinga ki te raarangi.
I raro i nga tautuhinga taunoa o te raina whakahau MySQL, ka mahia aunoa nga whakawhitinga, ara, ka mahia te mahi COMMIT i muri tonu i te mahi a te tauākī SQL.No reira, ki te whakatuwhera marama i tetahi tauwhitinga me whakamahi te whakahau BEGIN, START TRANSACTION ranei, me mahi ranei te whakahau SET AUTOCOMMIT=0, hei whakakore i te whakamahinga o te tuku aunoa mo te wahanga o naianei.
Tauākī mana tauwhitinga:
- WHAKATIMA, KAUPAPA KAUPAPA KAUPAPA ranei;
- COMMIT; Ka taea hoki te whakamahi COMMIT WORK, engari he rite nga mea e rua. Ka mahia e COMMIT te tauwhitinga me te whakapumau i nga whakarereketanga katoa i mahia ki te putunga raraunga;
- ROLLBACK; ka taea te whakamahi ROLLBACK WORK, engari he rite nga mea e rua.Ka whakamutua e te Hurihuri te tauwhitinga a te kaiwhakamahi me te wetewete i nga whakarereketanga katoa e haere ana;
- Kaitautohu SAVEPOINT; ka taea e SAVEPOINT te hanga i tetahi waahi penapena i roto i te tauwhitinga, a tera pea he maha nga SAVEPOINT i roto i te tauwhitinga;
- WHAKATOKANGA te tohu tohu SAVEPOINT; mukua he waahi penapena o te tauwhitinga, ina karekau he waahi penapena kua tohua, ka mahia te tauākī ka tukuna he okotahi;
- WHAKAARO KI te kaitautuhi, hurihia te tauwhitinga ki te waahi;
- SET TRANSACTION; whakamahia hei tautuhi i te taumata wehe o te tauwhitinga. Ko te miihini rokiroki InnoDB e whakarato ana i nga taumata wehe tauwhitinga o READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, and SERIALIZABLE.
E rua nga tikanga matua mo te tukatuka tauwhitinga MYSQL:
1. Whakamahia te BEGIN, ROLLBACK, COMMIT ki te whakatutuki
- Tuhinga timata i te tauwhitinga
- ROLOKO hurihanga tauwhitinga
- PANUI Whakapumautanga tauwhitinga
2. Whakamahia tika te SET ki te huri i te aratau tuku-aunoa a MySQL:
- SETAUTOCOMMIT=0 Monokia te tuku-aunoa
- SETAUTOCOMMIT=1 Whakakāhia te tuku-aunoa
whakamātautau tauwhitinga
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>
Te whakamahi i nga Tauhokohoko i roto i te PHP
MySQL ORDER MA te whakamatautau:
<? 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/ ) i tohatohahia "MySQL Database Transaction Rollback Isolation/Open Concept/Level Processing of PHP Statements", he pai ki a koe.
Nau mai ki te tohatoha i te hono o tenei tuhinga:https://www.chenweiliang.com/cwl-494.html
Nau mai ki te hongere Telegram o te blog a Chen Weiliang ki te tiki i nga korero hou!
📚 He uara nui tenei aratohu, 🌟He waahi onge tenei, kaua e ngaro! ⏰⌛💨
Tohaina me te pai ki te pai koe!
Ko to tiritiri me o hiahia ko to maatau hihiri tonu!