• MySQL事务隔离级别详解


    1、读未提交:read uncommitted(最低的隔离级别)

    什么是读未提交?

    事务A可以读取到事务B未提交的数据。

    这种隔离级别存在的问题就是:

    脏读现象!(Dirty Read)

    我们称读到了脏数据。

    这种隔离级别一般都是理论上的,大多数的数据库隔离级别都是二档起步!

    2、读已提交:read committed

    什么是读已提交?

    事务A只能读取到事务B提交之后的数据。

    这种隔离级别解决了什么问题?

    解决了脏读的现象。

    这种隔离界别存在什么问题?

    不可重复读数据。

    什么是不可重复读取数据呢?

    在事务开启之后,第一次读到的数据是3条,当前事务还没有结束,可能第二次再读取到的时候,读到的数据就是4条,3不等于4称为不可重复读取。

    这种隔离级别是比较真实的数据,每一次读到的数据是绝对的真实。

    oracle数据库默认的隔离级别是:读已提交:read committed

    3、可重复读:repeatable read(提交之后也读不到,永远读取的都是刚开启事务时的数据)

    什么是可重复读取?

    事务A开启之后,不管是多久,每一次在事务A中读取到的数据都是一致的。即使事务B将数据已经修改,并且提交了,事务A读取到的数据还是没有发生变化,这就是可重复读。

    可重复读解决了什么问题?

    解决了不可重复读取数据。

    可重复读存在的问题是什么?

    可以会出现幻读。

    每一次读取到的数据都是幻读,不够真实!

    早上9点开始开启了事务,只要事务不结束,到晚上9点,读到的数据还是那样!

    读到的是假象,不够绝对的真实。

    MySql中默认的事务隔离级别就是这个!!!

    4、序列化/串行化:serializable(最高的隔离级别)

    这是最高隔离级别,效率最低。解决了所有的问题。

    这种隔离级别表示事务排队,不能并发!

    synchronized,线程同步(事务同步)

    每一次读取到的数据都是最真实的,并且效率是最低的。

  • 相关阅读:
    用DIV+CSS技术设计的体育篮球主题 校园体育网页与实现制作(web前端网页制作课作业)
    qcow2等格式镜像磁盘冷访问
    移动端游戏软件开发:从创意到发布的全过程
    jmeter-while控制器用法
    ClickHouse数据一致性
    【giszz笔记】产品设计标准流程【4】
    springcloudalibaba架构(16):Gateway过滤器
    Docker 安装RabbitMq
    git 进阶
    Linux——centos7.4磁盘空间调整分配
  • 原文地址:https://blog.csdn.net/weixin_55076626/article/details/126225277