MySql的MVCC实现原理

MySql的MVCC实现原理

  • 前言
  • MVCC解决什么问题
  • MVCC的实现
    • 3个隐式字段
    • Undo Log
    • Read View读视图
  • 大致流程
  • 读已提交和可重复隔离级别下的快照读

前言

  • 什么是MVCC
    MVCC(Multi-Version Concurrency Control)即多版本并发控制,是乐观锁的一种实现方式,在MySql数据库中主要是为了提高数据库的并发性能,做到读写冲突不加锁,这里的读指的是快照读

  • 快照读与当前读
    当前读:读取的记录是最新版本,读取时会对读取的记录加锁,基于悲观锁的原理。加锁的select语句,update,insert,delete使用当前读,其中select语句加读锁,update,insert,delect语句使用的是写锁。
    快照读:快照读的前提是隔离级别不是串行级别,在串行级别下的读是当前读,快照读基于MVCC,快照读可能读到的不是最新版本而是历史版本。不加锁的select语句就是使用快照读。

  • MySql数据库的隔离级别:
    读未提交(Read Uncommitted):在其中一个事务中,可以读取到其他事务未提交的数据变化。这种读取其它会话还没有提交的事务,会产生脏读问题。
    读已提交(Read Committed):在其中一个事务中,可以读取到其它事务已经提交的数据变化。这种读取可能产生不可重复读问题 。
    可重复读(Repetable Read):在其中一个事务中,直到事务结束前,都可以

你可能感兴趣的:(mysql,mysql,mvcc,java)