IT老齐架构300讲笔记(030) MySQL MVCC机制

Posted Peter Pan 1231

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IT老齐架构300讲笔记(030) MySQL MVCC机制相关的知识,希望对你有一定的参考价值。

目录

MVCC

1.隔离级别​

2.场景分析 ​

 ReadView

1.ReadView数据结构

2.读已提交(RC):在每一次执行快照读时生成ReadView

3.可重复读(RR):仅在第一次执行快照读时生成ReadView,后续快照读复用


MVCC

1.隔离级别

mysql InnoDB存储引擎下,RCRR基于MVCC多版本并发控制)进行并发事务控制

MVCC基于”数据版本”对并发事务进行访问

2.场景分析

 

UNDO_LOG不是会被删除吗?中间数据万一被删了版本链不就断了?

UNDO_LOG版本链不是立即删除,MySQL确保版本链数据不再被“引用”后再进行删除

 ReadView

ReadView快照读SQL执行时MVCC提取数据的依据.

快照读就是最普通Select查询SQL语句

当前读指代执行下列语句时进行数据读取的方式

InsertUpdateDelete

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能避免幻读吗?

能,但不完全能!

  1. 连续多次快照读,ReadView会产生复用,没有幻读问题

  2. 当两次快照读之间存在当前读ReadView会重新生成,导致产生幻读

 

 

以上是关于IT老齐架构300讲笔记(030) MySQL MVCC机制的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 2.x 实战入门

《跟老齐学python Django实战 》笔记

[老齐的求职攻略] 第六章 试用期生存指南

网上图书商城项目学习笔记-030删除二级分类

小甲鱼Python第030讲文件系统:介绍一个高大上的东西 | 课后测试题及参考答案

终于有人把大数据云计算技术架构与实践技术讲明白了