Read Uncommitted 是否违反 Atomcity?

问题描述

我们知道数据库事务保证 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)。>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)