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:可视算法

 

 

幻读

 

posted @ 2023-03-20 21:16  银河系的极光  阅读(76)  评论(0)    收藏  举报