不一致分析和脏读有什么区别

  • 本文关键字:区别 脏读 不一致 sql
  • 更新时间 :
  • 英文 :


我是SQL的新手,正在准备测试。我想知道"脏读"和"不一致分析"之间有什么区别。这些与表的完整性有关。我用谷歌搜索并找到了一些答案,但似乎无法区分两者。这是我收集的,它们几乎具有相同的含义:脏读/不一致分析:如果事务 A 启动并更改了一个值,并且事务 B 在事务 A 可以提交/回滚之前读取此值,则有可能输入错误值,因为 A 可能已回滚但 B 读取了无效值。

如果有人能指出两者之间的区别,那将是很好的:)

它们都描述了前一个事务正在更改第二个事务正在读取的数据的情况。然而

在不一致性分析中,与脏读不同,第二个事务读取的数据是由进行更改的事务提交的。此外,不一致分析涉及同一行的多次读取(两次或更多次),每次信息被另一个事务更改,因此每次产生不同的结果,因此不一致

在脏读的情况下,第一个事务尚未提交事务,因此第二个事务获取的数据可能是最新版本,也可能不是最新版本。

让我们以两个事务为例,T1 和 T2

主要区别在于,在脏读中,发生错误是因为 T1 修改的值失败完成,因此被回滚,然后 T2 在回滚之前读取该值。但是,在不一致的分析中,T1 实际上完成了,但 T2 读取的值不正确,因为 T1 在完成之前进一步修改了它(在同一 T1 内的另一个操作中),导致 T2 在其事务中使用了错误的值。

最新更新