- 多版本并发控制 - 为了解决脏读,不可重复读的情况 - 基于Undo版本链接和ReadView来实现的,每个事务都有自己的版本号, - MVCC无法解决幻读,需要配合锁来实现 - 当前读 - select for update - select lock in share mode - insert update delete - 快照读 - 维护了同一个行的多个版本,查询时会返回对应的事务的修改版本 - 原理 - 隐藏字段 - 行记录,trx_id,roll_point - undo版本链,由当前最新记录+该记录之间的undo日志 - readview - 决定返回哪个版本的数据,版本链返回规则/可见性算法 - 当前活跃事务id - 最大事务id +1 - 最小事务id - readview创建者事务id - RC和RR下 - RC,每一次快照读都会生产readview - RR,只有第一次快照读生成readview后面复用 - MVCC解决了读写阻塞,再RR下快照读方面避免了出现幻读的问题