-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Open
Description
位置:
图解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是此刻建立的。
Metadata
Metadata
Assignees
Labels
No labels