Mysql事务隔离级别之读提交详解
16lz
2021-12-24
查看mysql 事务隔离级别
mysql> show variables like '%isolation%';+---------------+----------------+| Variable_name | Value |+---------------+----------------+| tx_isolation | READ-COMMITTED |+---------------+----------------+1 row in set (0.00 sec)
下面看看当前隔离级别下的事务隔离详情,开启两个查询终端A、B。
下面有一个order表,初始数据如下
mysql> select * from `order`;+----+--------+| id | number |+----+--------+| 13 | 1 |+----+--------+1 row in set (0.00 sec)
mysql> start transaction;Query OK, 0 rows affected (0.00 sec)
A
mysql> select * from `order`;+----+--------+| id | number |+----+--------+| 13 | 1 |+----+--------+1 row in set (0.00 sec)
mysql> select * from `order`;+----+--------+| id | number |+----+--------+| 13 | 1 |+----+--------+1 row in set (0.00 sec)
mysql> update `order` set number=2;Query OK, 1 row affected (0.00 sec)Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from `order`;+----+--------+| id | number |+----+--------+| 13 | 1 |+----+--------+1 row in set (0.00 sec)
第五步,提交事务B,再次查询A中的值
B
mysql> commit;Query OK, 0 rows affected (0.01 sec)
mysql> select * from `order`;+----+--------+| id | number |+----+--------+| 13 | 2 |+----+--------+1 row in set (0.00 sec)
第六步,提交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)
mysql> select * from `order`;+----+--------+| id | number |+----+--------+| 13 | 2 |+----+--------+1 row in set (0.00 sec)
下面给一个简单的示意图
我们可以看到,在事务隔离级别为读已提交 的情况下,当B中事务提交了之后,即使A未提交也可以读到B事务提交的结果。这样解决了脏读的问题。
更多相关文章
- MySQL系列多表连接查询92及99语法示例详解教程
- Android(安卓)- Manifest 文件 详解
- Android的Handler机制详解3_Looper.looper()不会卡死主线程
- Selector、shape详解(一)
- android2.2资源文件详解4--menu文件夹下的菜单定义
- Android(安卓)Studio 修改 Logcat 颜色
- Android发送短信方法实例详解
- Android(安卓)读取资源文件实例详解
- 详解Android中的屏幕方向