• 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,线程同步(事务同步)

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

  • 相关阅读:
    SpringBoot 实战 开发中 16 条最佳实践
    Jmeter和Postman那个工具更适合做接口测试?
    uni-app:js二维数组与对象数组之间的转换
    程序员属于什么阶级?上升空间如何?
    ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6020000000d4 at pc
    【蓝桥杯选拔赛真题61】Scratch小猫照镜子 少儿编程scratch图形化编程 蓝桥杯选拔赛真题解析
    升哲科技城市级“算力+数字底座”服务亮相2023服贸会
    JEE(面试题一)
    02 CSS块级元素和行内元素
    【毕业项目】 云备份
  • 原文地址:https://blog.csdn.net/weixin_55076626/article/details/126225277