Artikulo Direktoryo
database sa MySQLTransaction rollback isolation/open concept/level processing php statement
MySQL kalihokan
Ang mga transaksyon sa MySQL kasagarang gigamit sa pagproseso sa datos nga adunay daghang mga operasyon ug taas nga pagkakomplikado.Pananglitan, sa sistema sa pagdumala sa mga personahe, kung imong tangtangon ang usa ka tawo, kinahanglan nimo nga papason ang panguna nga kasayuran sa tawo ug ang kasayuran nga may kalabutan sa tawo, sama sa mga mailbox, artikulo, ug uban pa. Niini nga paagi, kini nga mga pahayag sa operasyon sa database usa ka transaksyon!
- Ang mga transaksyon gisuportahan sa MySQL para lamang sa mga database o mga lamesa nga naggamit sa Innodb database engine.
- Ang pagproseso sa transaksyon mahimong magamit aron mapadayon ang integridad sa database, pagsiguro nga ang mga hugpong sa mga pahayag sa SQL mahimo’g tanan nga gipatuman o wala’y usa niini ang gipatuman.
- Ang mga transaksyon gigamit sa pagdumala sa pagsal-ot, pag-update, pagtangtang sa mga pahayag
Sa kinatibuk-an nga pagsulti, ang usa ka transaksyon kinahanglan magtagbo sa 4 ka kondisyon (ACID): Atomicity (atomicity), Consistency (stability), Isolation (isolation), Durability (reliability)
- 1 、Atomicity sa mga transaksyon:Usa ka hugpong sa mga transaksyon nga molampos o mo-withdraw.
- 2 、kalig-on:Adunay iligal nga datos (mga langyaw nga yawe nga pagpugong ug uban pa), ug ang transaksyon gi-withdraw.
- 3 、Paglain:Ang mga transaksyon nagdagan nga independente.Kung ang resulta sa usa ka transaksyon makaapekto sa ubang mga transaksyon, unya ang ubang mga transaksyon i-withdraw.100% nga pag-inusara sa mga transaksyon, nga nanginahanglan sa pagsakripisyo sa katulin.
- 4 、kasaligan:Pagkahuman sa pagkahagsa sa software ug hardware, ang driver sa lamesa sa data sa InnoDB mogamit sa log file aron matukod ug usbon kini.Ang kasaligan ug taas nga tulin dili mahimong pareho, ang kapilian nga innodb_flush_log_at_trx_commit nagtino kung kanus-a itipig ang mga transaksyon sa log.
Ubos sa default nga mga setting sa MySQL command line, ang mga transaksyon awtomatik nga nahimo, nga mao, ang COMMIT nga operasyon ipatuman dayon human ang SQL nga pahayag ipatuman.Busa, sa dayag nga pag-abli sa usa ka transaksyon kinahanglang gamiton ang sugo BEGIN o START TRANSACTION, o ipatuman ang command SET AUTOCOMMIT=0, aron ma-disable ang paggamit sa automatic commit para sa kasamtangang session.
Pamahayag sa pagkontrol sa transaksyon:
- PAGSUGOD o PAGSUGOD TRANSAKSIYON; klarong pagsugod ug transaksyon;
- COMMIT; COMMIT WORK mahimo usab nga gamiton, apan ang duha managsama. Gibuhat sa COMMIT ang transaksyon ug gihimo nga permanente ang tanan nga mga pagbag-o nga gihimo sa database;
- ROLLBACK; posible nga gamiton ang ROLLBACK WORK, apan ang duha managsama.Gitapos sa rollback ang transaksyon sa tiggamit ug gitangtang ang tanan nga wala gitugyan nga mga pagbag-o nga nagpadayon;
- SAVEPOINT identifier; SAVEPOINT nagtugot sa paghimo og savepoint sa usa ka transaksyon, ug adunay daghang SAVEPOINTs sa usa ka transaksyon;
- GAWAS ang SAVEPOINT identifier; pagtangtang sa usa ka savepoint sa usa ka transaksyon, kung walay espesipikong savepoint, ang pagpatuman sa pahayag magpagawas ug eksepsiyon;
- ROLLBACK SA identifier; ibalik ang transaksyon sa punto;
- SET TRANSACTION; gigamit sa pagtakda sa isolation level sa transaksyon. Ang InnoDB storage engine naghatag og transaction isolation level sa READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, ug SERIALIZABLE.
Adunay duha ka nag-unang pamaagi sa pagproseso sa transaksyon sa MYSQL:
1. Gamita ang BEGIN, ROLLBACK, COMMIT para makab-ot
- MAHIMO pagsugod ug transaksyon
- ROLL BALIK rollback sa transaksyon
- SUGYOT Pagkumpirma sa transaksyon
2. Gamita ang SET direkta aron usbon ang auto-commit mode sa MySQL:
- I-SET AUTOCOMMIT=0 I-disable ang auto-commit
- I-SET AUTOCOMMIT=1 I-on ang auto-commit
pagsulay sa transaksyon
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>
Paggamit sa mga Instance sa Transaksyon sa PHP
MySQL ORDER PINAAGI sa pagsulay:
<? 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); ?>
Paglaum Chen Weiliang Blog ( https://www.chenweiliang.com/ ) mipaambit sa "MySQL Database Transaction Rollback Isolation/Open Concept/Level Processing of PHP Statements", nga makatabang kanimo.
Welcome sa pagpaambit sa link niini nga artikulo:https://www.chenweiliang.com/cwl-494.html
Malipayon nga pag-abut sa channel sa Telegram sa blog ni Chen Weiliang aron makuha ang labing bag-ong mga update!
📚 Kini nga giya adunay daghang kantidad, 🌟Kini usa ka talagsaon nga oportunidad, ayaw palabya kini! ⏰⌛💨
Share ug like kung ganahan ka!
Ang imong pagpaambit ug pag-like mao ang among padayon nga kadasig!