mysql的MVCC机制

作者: Rena的秘密 | 来源:发表于2022-09-20 15:18 被阅读0次

面试问题:如果两个客户端同时执行一个查询sql,为什么查出的数据可能不一样?

解答:是因为mysql底层维护了一个undo日志版本链和read-view一致性试图机制,在repeatable-read隔离级别下,一个事务开启之后,当执行查询语句的时候,就生成了一个read-view,之后查询就会根据一定的规则去undo日志版本链中比对数据;在read-commited隔离级别下,一个事务开启之后,每次执行查询语句的时候,都生成新的read-view,查询就会根据和repeatable-read隔离级别下一样的规则去undo日志版本链中比对数据。

对比规则如下:

如果版本链中的trx_id<min_id,说明当前事务可见;

如果版本链中的trx_id>max_id,说明当前事务不可见;

如果版本链中的min_id<=trx_id<=max_id,存在两种判断。

        若版本链中的trx_id位于数组中,则说明这个版本是由未提交的事务生成,不可见。

        若版本链中的trx_id不在数组中,说明这个版本是由已提交的事务生成,可见。

如下例:

分析:

相关文章

  • 深入理解MVCC与BufferPool缓存机制

    MVCC机制 MVCC(Multi Version Concurrency Control),MySQL(默认)R...

  • 数据库知识(2)

    mysql的MVCC机制 MVCC的维基百科解释:多版本并发控制(Multiversion concurrency...

  • mysql mvcc机制

    MVCC并发控制中,读操作可以分成两类:快照读 (snapshot read)与当前读 (current read...

  • Mysql MVCC机制

    概述 事务的ACID特性里面,Mysql通过MVCC机制来保证隔离性,实现可重复读的特性,但是可能会出现幻读的情况...

  • mysql mvcc 机制

    1、前言 mvcc 即多版本并发控制,即通过多版本的方式实现读写数据的高并发,主要是通过多版本和锁来实现的。多版本...

  • MVCC 隔离级别 视图

    MVCC Mysql/Oracle等数据库 均实现了MVCC(多版本并发控制),但各自的实现机制不尽相同。 Mys...

  • Mysql的mvcc机制

    我们都知道事务的4个特性,原子性 一致性 隔离性和持久化事务具有4个特征,分别是原子性、一致性、隔离性和持久性,简...

  • mysql的MVCC机制

    面试问题:如果两个客户端同时执行一个查询sql,为什么查出的数据可能不一样? 解答:是因为mysql底层维护了一个...

  • MySQL相关知识点

    MySQL(5)| 五分钟搞清楚 MVCC 机制MySQL (三) | 五分钟搞清楚MySQL事务隔离级别

  • 【Mysql】从事务到MVCC

    [TOC] 前言 本文主要介绍Mysql的事务特性以及mysql的MVCC机制,这块也是笔者在之前面试中的高频问题...

网友评论

    本文标题:mysql的MVCC机制

    本文链接:https://www.haomeiwen.com/subject/ugcvortx.html