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

 更新时间:2019年01月18日 11:20:36   作者:旧梦发癫  
这篇文章主要介绍了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实现合并多个分组(GROUP_CONCAT及其平替函数)

    Mysql实现合并多个分组(GROUP_CONCAT及其平替函数)

    MySQL 中提供了多种合并字符串的函数和操作方法,包括 GROUP_CONCAT、CONCAT_WS 和 CONCAT 等,本文介绍了 MySQL 中 GROUP_CONCAT 函数以及 CONCAT_WS、CONCAT 函数并通过示例代码演示了它们的用法,感兴趣的可以了解一下
    2023-10-10
  • 解析MySQL数据库性能优化的六大技巧

    解析MySQL数据库性能优化的六大技巧

    本篇文章是对MySQL数据库性能优化的六大技巧进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • Mysql一主多从部署的实现步骤

    Mysql一主多从部署的实现步骤

    本文主要介绍了Mysql一主多从部署的实现步骤,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • MySQL实现分词搜索(FULLTEXT)的方法

    MySQL实现分词搜索(FULLTEXT)的方法

    这篇文章主要介绍了MySQL实现分词搜索(FULLTEXT)的方法,包括全文搜索的简单使用,建表添加FULLTEXT索引使用该技术非常简单,首先需要有一张表,我建立了一张图书表并插入了两条数据,需要的朋友可以参考下
    2022-10-10
  • 使用FriendFeed来提升MySQL性能的方法

    使用FriendFeed来提升MySQL性能的方法

    这篇文章主要介绍了使用FriendFeed来提升MySQL性能的方法,用其来存储无模式的数据从而能够维护索引,需要的朋友可以参考下
    2015-06-06
  • MySQL 各个索引的使用详解

    MySQL 各个索引的使用详解

    这篇文章主要介绍了MySQL 各个索引的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • mysql多主双向和级联复制

    mysql多主双向和级联复制

    这篇文章主要介绍了mysql多主双向和级联复制,架构内各个库均同时开启binlog的master和slave,主主库额外开启级联复制开关,下面详细内容,需要的小伙伴可以参考一下
    2022-01-01
  • mysql中如何对列求和

    mysql中如何对列求和

    这篇文章主要介绍了mysql中如何对列求和问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • mysql 查询数据库中的存储过程与函数的语句

    mysql 查询数据库中的存储过程与函数的语句

    mysql 查询数据库中的存储过程与函数的语句,需要的朋友可以参考下。
    2011-05-05
  • MySQL自增列解析(Auto_increment)

    MySQL自增列解析(Auto_increment)

    MySQL数据库为列提供了一种自增属性,本文主要介绍了MySQL自增列解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-09-09

最新评论