mysql的mvcc
参考:https://www.bilibili.com/video/BV17Y41117iV?p=10&vd_source=aa4e16557c3a6622877c08d8d7a0a57f
事物四大特性:
原子性:undolog
持久性:redolog
隔离性:锁+mvcc实现
一致性 = 原子性+隔离性+持久性

一:日志体系

1.1、redolog原理


1.2、binlog与redolog执行顺序
两阶段提交
mysql集群同步数据
1、先写redlog只是状态为prepare(预备)
2、写binlog日志成功则redlog状态为commit,否则丢弃prepare的redlog日志

1.2、undolog原理
undolog:回滚日志,表示在insert、delete、update操作的时候产生的方便回滚的日志

通过上述过程可以发现undolog会变成一个链表,链首是最新的旧记录,链尾是最旧的旧记录
链表中的内容不可能无限增加,所以在mysql后台服务中有一个线程叫做purge来进行清理操做
二:MVCC
2.1:概念
Multi-version concurrency controll,多版本并发控制,是用来解决数据并发场景中并发读写问题的
MVCC的底层实现是由三部分组成的,隐藏字段,undolog,readview

2.2:隐藏字段

2.3:undolog参考1.2
2.4:readview阅读视图

案例:

重点:
RR隔离级别为不可重复的的情况下一个事物中只生成一个readview
RC隔离级别为读已提交的的情况下;每次进行快照读都生成新的readview

2.5:可视算法

幻读


浙公网安备 33010602011771号