Mysql事件断绝级别内容的引见(读提交)【MySQL教程】,mysql,事务
Mysql事件断绝级别之读提交
检察mysql 事件断绝级别mysql> show variables like '%isolation%'; +---------------+----------------+ | Variable_name | Value | +---------------+----------------+ | tx_isolation | READ-COMMITTED | +---------------+----------------+ 1 row in set (0.00 sec)
能够看到当前的事件断绝级别为 READ-COMMITTED
读提交
下面看看当前断绝级别下的事件断绝概况,开启两个查询终端A、B。
下面有一个order
表,初始数据以下
mysql> select * from `order`; +----+--------+ | id | number | +----+--------+ | 13 | 1 | +----+--------+ 1 row in set (0.00 sec)
第一步,在A,B中都开启事件
mysql> start transaction; Query OK, 0 rows affected (0.00 sec)
第二步查询两个终端中的number
值
A
mysql> select * from `order`; +----+--------+ | id | number | +----+--------+ | 13 | 1 | +----+--------+ 1 row in set (0.00 sec)
B
mysql> select * from `order`; +----+--------+ | id | number | +----+--------+ | 13 | 1 | +----+--------+ 1 row in set (0.00 sec)
第三步将B中的number
修正成2,但不提交事件
mysql> update `order` set number=2; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0
第四步查询A中的值
mysql> select * from `order`; +----+--------+ | id | number | +----+--------+ | 13 | 1 | +----+--------+ 1 row in set (0.00 sec)
发明A中的值并没有修正。
第五步,提交事件B,再次查询A中的值
B
mysql> commit; Query OK, 0 rows affected (0.01 sec)
A
mysql> select * from `order`; +----+--------+ | id | number | +----+--------+ | 13 | 2 | +----+--------+ 1 row in set (0.00 sec)
发明A中的值已变动
第六步,提交A中的事件,再次查询A,B的值。
A
mysql> commit; Query OK, 0 rows affected (0.00 sec) mysql> select * from `order`; +----+--------+ | id | number | +----+--------+ | 13 | 2 | +----+--------+ 1 row in set (0.00 sec)
B
mysql> select * from `order`; +----+--------+ | id | number | +----+--------+ | 13 | 2 | +----+--------+ 1 row in set (0.00 sec)
发明A,B中的值都变动成2了。
下面给一个简朴的示意图
我们能够看到,在事件断绝级别为读已提交
的情况下,当B中事件提交了以后,纵然A未提交也能够读到B事件提交的效果。如许处理了脏读
的题目。
以上就是Mysql事件断绝级别内容的引见(读提交)的细致内容,更多请关注ki4网别的相干文章!