Read Uncommitted 是否违反 Atomcity?

时间:2021-02-26 08:49:58

标签: sql acid

我们知道数据库事务保证 ACID(原子性、一致性、隔离性、持久性)。 SQL 提供了 Read Uncommitted Isolation Level,通过这个级别的设置,reader 可以在事务中读取脏数据,如果事务回滚,脏数据可能会被丢弃。

但我认为,这种行为也违反了原子性。

说,我们有

a = 0
b = 0

会话 A 执行事务:

begin
set a = 1
// continues...

另一个会话 B 从数据库中读取:

get a, b => a=1, b=0

会话 A 继续

set b = 2
commit

读过程读出(a=1, b=0),这不是违反原子性吗?我只期望 (a=0, b=0) 或 (a=1, b=2) 会满足原子性,永远不会 (a=0, b=2) 或 (a=1, b=0)。

0 个答案:

没有答案
相关问题