数据库教程:Mysql事务隔离级别之读提交详解

查看mysql 事务隔离级别 mysql> show variables like ‘%isolation%’; +—————+—

查看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了。

下面给一个简单的示意图

Mysql事务隔离级别之读提交详解

我们可以看到,在事务隔离级别为读已提交 的情况下,当b中事务提交了之后,即使a未提交也可以读到b事务提交的结果。这样解决了脏读的问题。

以上就是数据库技术:Mysql事务隔离级别之读提交详解的全部内容,希望对大家的学习有所帮助,也希望大家多多支持<计算机技术网(www.ctvol.com)!!>。

需要了解更多数据库技术:Mysql事务隔离级别之读提交详解,都可以关注数据库技术分享栏目—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/dtteaching/829945.html

(0)
上一篇 2021年9月18日
下一篇 2021年9月18日

精彩推荐