Skip to content

mvcc的readview的表述有一点错误。 #343

Description

@atengya

位置:
图解mysql-事务篇-事务隔离级别是怎么实现的?-可重复读是如何工作的?

原文:
可重复读是如何工作的?
可重复读隔离级别是启动事务时生成一个 Read View,然后整个事务期间都在用这个 Read View。假设事务 A(事务 id 为51)启动后,紧接着事务 B(事务 id 为52)也启动了,那这两个事务创建的Read View如下:

问题:
经测试,这个readview并不是在启动事务的时候创建的,而是在第一次快照读的时候创建的。
例子如下

表结构
id age
1 18

SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ; # 临时设置为可重复读状态
可重复读状态
时刻 事务1
1 start transaction;
2
3 update test set age = 19 where id = 1;
4 commit;

时刻 事务2
1
2 start transaction;
3
4
5 select * from test where id = 1; # 这里查到的age为19, 说明readview是此刻建立的。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions