美文网首页
面试之事务隔离级别

面试之事务隔离级别

作者: 西海岸虎皮猫大人 | 来源:发表于2020-03-20 22:07 被阅读0次
    1.背景

    今天接受海尔的视频面试,第二个问题就是事务的隔离级别,又栽了跟头,貌似在这个问题上不止栽了一次了,面试官似乎也特别喜欢问这个问题,于是乎,集中解决一下。

    2.概念
    ACID

    原子性、一致性、隔离性、持久性

    原子性

    要么全执行,要么不执行

    一致性

    比如转账,不能出现A扣钱而B没收到钱

    隔离性

    事务之间没有干扰,比如A取钱结束钱,B不能向A转账

    持久性

    事务完成后,所有更新保存到数据库,不能回滚

    脏读

    事务A读取了事务B更新的数据,然后B回滚,A脏读

    不可重复读

    事务A多次读取统一数据,在此过程中事务B进行了更新操作,导致事务A多次读取结果不一致

    幻读

    事务A插入已经检查不存在的数据,发现该数据存在

    3.事务隔离级别
    a.读未提交

    假设事务A读,事务B更新,事务A会读取到B未提交的数据;如事务B回滚,则A读到的是脏数据

    b.读已提交

    事务A 开启
    事务A select
    事务B 开启
    事务B update
    事务A select 此时事务A不能查询到B未提交数据,解决了脏读问题
    事务B 提交
    事务A select 与第一次select结果不一致,产生了不可重复读问题

    c.可重复读

    事务A 开启
    事务A select id = 1
    事务B 开启
    事务B insert id = 1 伪代码,插入id为1的数据
    事务B 提交
    事务A select 此时的select与第一次不会出现不一致的情况
    事务A update、insert、delete会按照当前版本,select是历史版本
    事务A select id = 1 与第一次结果一致,可重复读
    事务A insert id = 1报错,出现幻读问题

    d.串行化

    事务A 开启
    事务A select
    事务B 开启
    事务B insert 报错,由于串行化会锁表

    参考:
    https://www.cnblogs.com/wyaokai/p/10921323.html

    相关文章

      网友评论

          本文标题:面试之事务隔离级别

          本文链接:https://www.haomeiwen.com/subject/vubsyhtx.html