数据库
首页 > 数据库> > MySQL --- 读书笔记 --- MVCC

MySQL --- 读书笔记 --- MVCC

作者:互联网

1. 什么是MVCC

MVCC(Multiversion Concurrency Control),多版本并发控制,通过数据行的多个版本管理来实现数据库的并发控制,使得在事务隔离级别下执行一致性读有了保证。MVCC没有正式标准。

2. 快照读与当前读

快照读

又叫一致性读,读取的是快照数据。不加锁的简单SELECT都属于快照读

前提是,当前隔离级别不是串行,串行会退化为当前读

当前读

读取的是最新数据,还要保证读取时,其他并发事务不能修改当前数据,会对读取记录加锁

4. MVCC实现原理之ReadView

MVCC的实现依赖于:隐藏字段、undo log、read view

4.1 什么是ReadView

多个事务对记录的修改,会产生多个历史版本,这些历史记录都在 undo log 中,当需要读取时,读取哪个历史版本,就需要用到ReadView

ReadView就是事务在进行快照读时产生的视图,当事务启动,会生成数据库系统当前的快照。InnoDB为每个事务构造了一个数组,用来记录并维护当前活跃事务的ID

核心问题是需要判断一下历史版本中的哪个版本是当前事务可见的,这是ReadView要解决的主要问题

4.2 设计思路

ReadView包含4个比较重要的内容

  1. creator_trx_id:创建当前ReadView的事务
  2. trx_ids:生成ReadView时,当前系统的活跃事务ID列表
  3. up_limit_id:活跃事务中最小ID
  4. low_limit_id:表示生成ReadView时系统应该分配给下一个事务的ID(不是指的活跃ID)

4.3 规则

有了ReadView后,按照以下规则判断记录的某个版本是否可见

标签:事务,快照,读书笔记,ReadView,---,trx,版本,MVCC,id
来源: https://www.cnblogs.com/huangwenhao1024/p/16297905.html