【发布时间】:2018-10-25 11:07:16
【问题描述】:
我已经看到了很多与不一致分析和脏读以及不可重复读取与脏读的比较,但我似乎无法理解不一致(不正确)分析与不可重复读取之间的区别?
有没有更好的方法来解释这一点。
我的困惑在于,它们都是事务的多次读取部分,其中第二个(或第三个)事务进行提交的更新。
分析不正确 - 第二个事务读取的数据是由进行更改的事务提交的。不一致的分析涉及对同一行的多次读取(两次或多次),并且每次信息被另一个事务更改,因此每次产生不同的结果,因此不一致。
在哪里
不可重复读取发生在一个事务尝试访问相同数据两次并且第二个事务在第一个事务的读取尝试之间修改数据时。这可能会导致第一个事务读取相同数据的两个不同值,导致原始读取不可重复。
我无法弄清楚它们有何不同。 谢谢。
【问题讨论】:
-
它们是同义词。在这两种情况下,事务 A 读取一行,事务 B 更改它,事务 A 再次读取它。见coursehero.com/file/p3ra5ncs/…
-
@kfinity 教科书和网站将它们列为带有单独示例的单独问题,我无法弄清楚其中的区别。
-
差异读取为时间之一 - 因此是细微的差异。分析不正确,事务在进行中,但可以回滚。不可重复读取读取的内容多于提交第二个事务。虽然没有足够的说服力来考虑这是一个答案。
-
@Andrew 谢谢你,但我认为“飞行中的交易”未提交,是我读到的脏读物。除非我误解了你的解释。
-
@Elizabeth - 不,我同意你的观点,这是一个肮脏的阅读。这里不正确的分析有点奇怪。 - 尤其是与 Oracle 配对时。
标签: sql oracle transactions isolation-level transaction-isolation