zoukankan      html  css  js  c++  java
  • mysql 脏读 不可重复读 幻读 四大隔离级别

    脏读(一个事务读取到另一个事务未提交的数据)

    下面的例子,a就这样骗走了b的100块钱的货物

    img

    img

    不可重复读(一个事务读取到另一个事务已经提交的数据)

    下面的例子,b获取的数据前后不一致

    img

    解决办法:如果只有在修改事务完全提交之后才可以读取数据,则可以避免该问题。

    幻读(一个事务多次查询整表数据,由于其他事务新增(删除)记录造成多次查询的记录条数不同(一个事务读取到另一个事务已经提交的数据))

    下面的例子,在d做查询的时候,c进来存了2000块,造成avg的结果与预期不一致

    img

    解决办法:如果在操作事务完成数据处理之前,任何其他事务都不可以添加新数据,则可避免该问题

    针对上面的三个问题,数据库提出四大隔离级别

    隔离级别 脏读(Dirty Read) 不可重复读(NonRepeatable Read) 幻读(Phantom Read)
    未提交读(Read uncommitted) 可能 可能 可能
    已提交读(Read committed) 不可能 可能 可能
    可重复读(Repeatable read) 不可能 不可能 可能
    可串行化(Serializable ) 不可能 不可能 不可能

    mysql默认是 Repeatable read 这个隔离级别

    设置隔离级别的语句

    set [session/global] transaction isolation level ...;——修改隔离级别
    
    select @@tx_isolation;——查询当前数据库的隔离级别
    
  • 相关阅读:
    原型设计作业
    20210405-1 案例分析作业
    要命的作业
    20210309-1 准备工作
    20210309-2 阅读任务
    前端用js获取本地文件的内容
    2019春第四周作业
    解决BootStap TreeView插件在 BootStrap4上不兼容问题
    ABP VNEXT使用PUT方法时报”对象已被修改,乐观并发失败“解决方案
    【一步一步入坑ABP VNEXT】安装ABP CLI
  • 原文地址:https://www.cnblogs.com/chenwenyin/p/13582517.html
Copyright © 2011-2022 走看看