mysql事务隔离级别与MVCC机制

72 阅读1分钟

1.并发事务处理带来的问题

  • 更新丢失或脏写: 最后的更新覆盖了由其他事务所做的更新
  • 脏读: 事务A读到了事务B已经修改但尚未提交的数据
  • 不可重复读: 事务A内部的相同查询语句在不同的时刻读出的结果不一致,不符合隔离性
  • 幻读: 事务A读到了事务B提交的新增数据,不符合隔离性

2.事务隔离级别

  • 读未提交: 脏读,不可重复读, 幻读
  • 读已提交: 不可重复读,幻读
  • 可重复读: 幻读 (读写锁)
  • 可串行化: 没问题(线性执行)

3.MVCC机制

  • 概念:多版本并发控制,可以认为是行级锁的一个变种,他可以在很多情况下避免加锁操作,因此开销更低 实现了非阻塞的读操作,写操作也只锁定必要的行
  • 实现机制:实现是通过保存数据在某个时间的快照来实现 支持哪些事务隔离级别--读已提交,可重复读