IT老齐架构300讲笔记(030) MySQL MVCC机制
Posted Peter Pan 1231
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IT老齐架构300讲笔记(030) MySQL MVCC机制相关的知识,希望对你有一定的参考价值。
目录
2.读已提交(RC):在每一次执行快照读时生成ReadView
3.可重复读(RR):仅在第一次执行快照读时生成ReadView,后续快照读复用
MVCC
1.隔离级别
在mysql InnoDB存储引擎下,RC、RR基于MVCC(多版本并发控制)进行并发事务控制
MVCC是基于”数据版本”对并发事务进行访问
2.场景分析
UNDO_LOG不是会被删除吗?中间数据万一被删了版本链不就断了?
UNDO_LOG版本链不是立即删除,MySQL确保版本链数据不再被“引用”后再进行删除
ReadView
ReadView是“快照读”SQL执行时MVCC提取数据的依据.
快照读就是最普通的Select查询SQL语句
当前读指代执行下列语句时进行数据读取的方式
Insert、Update、Delete、
Select...for update
Select...lock in share mode
1.ReadView数据结构
ReadView是一个数据结构,包含4个字段
- m_ids:当前活跃的事务编号集合
- min_trx_id:最小活跃事务编号
- max_trx_id:预分配事务编号,当前最大事务编号+1
- creator_trx_id:ReadView创建者的事务编号
2.读已提交(RC):在每一次执行快照读时生成ReadView
3.可重复读(RR):仅在第一次执行快照读时生成ReadView,后续快照读复用
RR级别下使用MVCC能避免幻读吗?
能,但不完全能!
连续多次快照读,ReadView会产生复用,没有幻读问题
当两次快照读之间存在当前读,ReadView会重新生成,导致产生幻读
以上是关于IT老齐架构300讲笔记(030) MySQL MVCC机制的主要内容,如果未能解决你的问题,请参考以下文章