2023-02-21 Mysql MVCC
2023-02-20 本文已影响0人
ForestPei
1.MVCC
![](https://img.haomeiwen.com/i8922740/79eff64ec94f721d.png)
2.可重复读,读已提交
![](https://img.haomeiwen.com/i8922740/8c1e490c1abd594e.png)
3.UNDO_LOG
TRX_ID
DB_ROLL_PTR
[图片上传失败...(image-894f70-1676981931912)]
UNDO_LOG操作特点:
![](https://img.haomeiwen.com/i8922740/2aa246cea1ddf1f8.png)
4.ReadView
![](https://img.haomeiwen.com/i8922740/324508da3123d1de.png)
4.1快照读
:就是最普通的Select查询SQL语句。标准
4.2当前读
:指代执行下列语句时进行的数据读取的方式
Insert ,Update,Delete,
Select....for update ;
Select ... lock in share mode;
4.3 ReadView数据结构
m_ids:当前活跃的事务编号集合
min_trx_id:最小活跃事务编号*
*max_trx_id:预分配事务编号,当前最大事务编号+1
creator_trx_id:ReadView 创建者的事务编号
![](https://img.haomeiwen.com/i8922740/0a5c9f3a4ef4d75a.png)
4.4 读已提交(RC):在每一次执行快照读时生成ReadView
ReadView生成过程
右边的黄色区域,就是两次快照读产生的ReadView;
![](https://img.haomeiwen.com/i8922740/ee575464a3dcf4f5.png)
UNDO_LOG版本链
![](https://img.haomeiwen.com/i8922740/86987a25053dc814.png)
再次生成ReadView
![](https://img.haomeiwen.com/i8922740/67a94a1a3d7bc19e.png)
5. 可重复读(RR)
![](https://img.haomeiwen.com/i8922740/629671508bfa2ad1.png)
版本链没有发生编号,
ReadView两次一致;
![](https://img.haomeiwen.com/i8922740/c09804ebed040d82.png)
6.RR能解决泛读吗?
![](https://img.haomeiwen.com/i8922740/d7277a18283be945.png)
![](https://img.haomeiwen.com/i8922740/4d9648a91bcd20c1.png)
7.
![](https://img.haomeiwen.com/i8922740/fc138b9654dea9cb.png)