Directory artaigil
Stòr-dàta MySQLIomallachd gluasad air ais gnìomh / bun-bheachd fosgailte / aithris php giollachd ìre
MySQL Cùisean
Tha gnothaichean MySQL air an cleachdadh sa mhòr-chuid airson dàta a phròiseasadh le mòran obrachaidhean agus iom-fhillteachd àrd.Mar eisimpleir, anns an t-siostam riaghlaidh sgiobachd, ma sguabas tu às neach, feumaidh tu an dà chuid fiosrachadh bunaiteach an neach agus am fiosrachadh co-cheangailte ris an neach a dhubhadh às, leithid bogsaichean puist, artaigilean, msaa. dèan malairt!
- Tha gnìomhan a’ faighinn taic ann am MySQL a-mhàin airson stòran-dàta no clàran a chleachdas einnsean stòr-dàta Innodb.
- Faodar giullachd ghnothaichean a chleachdadh gus ionracas an stòr-dàta a chumail suas, a’ dèanamh cinnteach gu bheil batches de aithrisean SQL uile air an cur gu bàs no nach eil gin dhiubh air an cur gu bàs.
- Bithear a’ cleachdadh ghnìomhan gus cuir a-steach, ùrachadh, cuir às do aithrisean a riaghladh
San fharsaingeachd, feumaidh gnothaichean coinneachadh ri 4 cumhachan (ACID): Atomity (atomicity), Co-chòrdalachd (seasmhachd), Iomallach (aonaranachd), Seasmhachd (earbsachd)
- 1 、Atomity nan gnothaichean:Seata de ghnothaichean a shoirbhicheas no a tharraing air ais.
- 2 、seasmhachd:Tha dàta mì-laghail ann (prìomh chuingealachaidhean cèin agus an leithid), agus tha an gnothach air a tharraing air ais.
- 3 、Leth-oireachd:Bidh gnìomhan a’ ruith gu neo-eisimeileach.Ma bheir toradh malairt buaidh air gnothaichean eile, thèid gnothaichean eile a tharraing air ais.Iomallachd 100% de ghnothaichean, a dh’ fheumas astar ìobairt.
- 4 、earbsachd:Às deidh an tubaist bathar-bog is bathar-cruaidh, cleachdaidh an draibhear clàr dàta InnoDB am faidhle log gus ath-chruthachadh agus atharrachadh.Chan urrainn dha earbsa agus astar àrd an dà chuid a bhith ann, tha an roghainn innodb_flush_log_at_trx_commit a’ dearbhadh cuin a shàbhaileas tu gnothaichean don loga.
Fo shuidheachaidhean bunaiteach loidhne-àithne MySQL, thèid gnothaichean a ghealltainn gu fèin-ghluasadach, is e sin, thèid an gnìomhachd COMMIT a chuir gu bàs sa bhad às deidh an aithris SQL a chuir gu bàs.Mar sin, gus malairt fhosgladh gu soilleir feumaidh tu an àithne BEGIN no START TRANSACTION a chleachdadh, no an àithne SET AUTOCOMMIT=0 a chur an gnìomh, gus cleachdadh gealltanas fèin-ghluasadach airson an t-seisein làithreach a chur à comas.
Aithris smachd gnìomh:
- Tòiseachadh no Tòiseachadh air malairt; tòisich gu soilleir air malairt;
- GEALLADH; faodar OBAIR GEALL a chleachdadh cuideachd, ach tha an dà rud co-ionann. Bidh COMMIT a’ gealltainn a’ ghnothaich agus a’ dèanamh a h-uile atharrachadh a chaidh a dhèanamh air an stòr-dàta maireannach;
- ROLLBACK; tha e comasach obair ROLLBACK a chleachdadh, ach tha an dà rud co-ionann.Bidh Rollback a’ crìochnachadh malairt an neach-cleachdaidh agus a’ cuir às do gach atharrachadh neo-cheangailte a tha a’ dol air adhart;
- Aithniche SAVEPOINT; Tha SAVEPOINT a’ ceadachadh àite sàbhalaidh a chruthachadh ann an gnothach, agus faodaidh grunn SAVEPOINTs a bhith ann an gnothach;
- RELEASE SAVEPOINT aithnichear; cuir às do phuing sàbhalaidh de ghnìomhachd, nuair nach eil àite sàbhalaidh sònraichte ann, tilgidh cur an gnìomh an aithris eisgeachd;
- ROLLBACK TO aithnichear; cuir air ais an gnothach chun phuing;
- SET TRANSACTION; air a chleachdadh gus ìre iomallachd a’ ghnothaich a shuidheachadh. Tha na h-ìrean iomallachd malairt a tha an einnsean stòraidh InnoDB a’ toirt seachad air an LEUGHADH UNCOMMITTED, READ COMMITTED, REREATABLE READ, agus SERIALIZABLE.
Tha dà phrìomh dhòigh air làimhseachadh malairt MYSQL:
1. Cleachd BEGIN, ROLLBACK, COMMIT airson coileanadh
- BEGIN tòiseachadh air malairt
- RIAGHLADH gluasad air ais malairt
- COMATAIDH Dearbhadh gnothaich
2. Cleachd SET gu dìreach gus modh fèin-gheallaidh MySQL atharrachadh:
- SETAUTOCOMMIT=0 Cuir à comas fèin-ghluasad
- SETAUTOCOMMIT=1 Cuir air fèin-gealltainn
deuchainn malairt
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>
A’ cleachdadh chùisean malairt ann am PHP
MySQL ORDER LE deuchainn:
<? 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); ?>
An dòchas blog Chen Weiliang ( https://www.chenweiliang.com/ ) air a cho-roinn “Iarrtas Rollback Stòr-dàta MySQL Iomallach / Bun-bheachd Fosgailte / Giullachd Ìre de Aithrisean PHP”, a tha cuideachail dhut.
Fàilte gus ceangal an artaigil seo a cho-roinn:https://www.chenweiliang.com/cwl-494.html
Fàilte don t-sianal Telegram de bhlog Chen Weiliang gus na h-ùrachaidhean as ùire fhaighinn!
📚 Tha luach mòr anns an stiùireadh seo, 🌟 Is e cothrom ainneamh a tha seo, na caill e! ⏰⌛💨
Roinn agus toil ma thogras tu!
Is e do roinneadh agus do rudan mar ar brosnachadh leantainneach!