【问题标题】:What is the difference between inconsistent analysis and dirty reads?不一致的分析和脏读有什么区别?
【发布时间】:2021-11-30 01:03:26
【问题描述】:

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

如果有人能指出两者之间的区别,那就太好了:)

【问题讨论】:

  • 请您扩展“不一致分析”的含义。

标签: sql


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    让我们进行两笔交易,T1 和 T2

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

    【讨论】:

      猜你喜欢
      • 2018-10-25
      • 2012-10-30
      • 2013-12-28
      • 2016-03-31
      • 2020-10-28
      • 1970-01-01
      • 2013-08-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多