交易中何时考虑sanpshot?

问题描述 投票:0回答:1

交易中什么时候真正拍摄快照?在

BEGIN TRANSACTION
上还是在第一次操作时?

我一直在使用 REPEATABLE READ 隔离级别尝试 MySQL 和 PostgreSQL 中的事务,并且我注意到一些意外的情况:

我启动了两笔交易,

T1
T2
。启动
T1
后,我在
T2
中进行更改(例如更新行),并且我仍然可以在
T1
中看到这些更改,直到我在
T1
中执行第一个查询(读取或写入)。看起来快照不是在
BEGIN TRANSACTION
创建的,而是在事务中的第一个操作之后创建的。

这是 MySQL 和 PostgreSQL 中的预期行为吗?事务中快照隔离具体什么时候开始?

mysql database postgresql transactions isolation-level
1个回答
0
投票

https://dev.mysql.com/doc/refman/en/innodb-transaction-isolation-levels.html有答案:

同一事务内的一致读取会读取第一次读取建立的快照。

© www.soinside.com 2019 - 2024. All rights reserved.