MySQL的事务-可重复读

        MySQL数据库的默认事务隔离级别是可重复读(Repeatable Read)。在这个隔离级别下,可以解决读已提交(Read Committed)产生的幻读问题,事务在开始时创建一个数据快照,并在整个事务期间使用这个快照进行读取操作,确保读取的数据在事务内保持一致。

        可重复读事务隔离级别的主要特点有:

(1)一致性读:因为在可重复读隔离级别下,事务的Select操作会读取到事务开始时的数据快照。

(2)行级锁:当一个事务修改一行数据时,会锁定该行,防止其他事务同时修改或删除该行,这样可以保证事务的原子性和隔离性。

(3)多版本并发控制(MVCC): MySQL使用多版本并发控制机制来实现可重复读隔离级别。每个事务都会看到一个独立的数据版本,不同的事务之间不会相互干扰。

在MySQL数据库的隔离级别时可重复读(Repeatable Read)的情况,验证数据不会产生幻读。

测试一、

连接A:开启事务

在连接B中,插入一条数据:

在连接B中,可以查询到4条记录,但是在连接A中,仍然是原来的三条记录,如下所示:

测试二:

在连接A中开启事务:

在连接B中修改id=3的money值,

但是在连接A中看到的仍然是事务开始时的值。

通过测试一、测试二可以看到,MySQL的Repeatable Read事务隔离级别确保了事务的一致性。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-27 12:02:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-27 12:02:02       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-27 12:02:02       82 阅读
  4. Python语言-面向对象

    2023-12-27 12:02:02       91 阅读

热门阅读

  1. 极智开发 | 解读英伟达软件生态 一切的基础CUDA

    2023-12-27 12:02:02       65 阅读
  2. 【2024考研】心情记录

    2023-12-27 12:02:02       64 阅读
  3. 实验五 哈希表的算法实现

    2023-12-27 12:02:02       55 阅读
  4. aws-sdk-cpp通过bazel构建的S3_client轮子

    2023-12-27 12:02:02       65 阅读