数据库事务的4种隔离级别

并发的事务可能存在的问题:

  • 读脏:事务A读到了事务B未提交的数据。
  • 不可重复读:事务A在事务B执行期间修改了数据,导致事务B同一个查询两次结果不一致。
  • 幻读:事务A在事务B执行期间插入了数据,导致事务B先查后插被报重复。

InnoDB的事务隔离级别

  • 读未提交(Read Uncommitted):select 不加锁,可出现读脏,并发性最高,一致性最差;(高并发场景不会用)
  • 串行化(Serializable):所有select 被隐式转化为 select……in share mode,被如果结果集中有update、insert事务,则select被阻塞。(高并发场景不会用)
  • 可重复读(Repeated Read)(InnoDB默认的隔离级别):
    • 普通select 使用快照读
    • 锁select /update /delete 根据查询条件选择记录锁、间隙锁/临键锁,防止读到幻影记录。
  • 读提交(Read Committed)(互联网最常用
    • 普通select 使用快照读
    • 锁select /update /delete 使用记录锁,可能会出现幻读。

以上总结参考:https://mp.weixin.qq.com/s/x_7E2R2i27Ci5O7kLQF0UA   

原文地址:https://www.cnblogs.com/smallzhen/p/14477885.html