【问题标题】:Dirty read problem- updation in database after transaction doing dirty read commits脏读问题-事务执行脏读提交后数据库中的更新
【发布时间】:2019-07-06 19:46:58
【问题描述】:

假设我们有 2 个事务作为 T1,T2,T2 对 T1 修改的数据进行脏读并在 T1 之前提交。现在假设 T1 失败并回滚。我的问题是 - 由于 T2 已提交,T2 所做的更改是否会从共享缓冲区转移到原始数据库(因为我已经读过事务所做的更改一旦事务提交就会永久保存到原始数据库)?如果它们被转移到原始数据库,那么 T1 将如何回滚并获取数据项的先前值(被 T2 读脏)?通过它的缓冲区或原始数据库?

【问题讨论】:

    标签: database concurrency transactions dirtyread


    【解决方案1】:

    除非您通过设置隔离级别专门调用脏读,否则此类问题根本不会发生。这就是交易的全部想法。如果 T1 已更新,则 T2 将被锁定在行之外。如果您通过设置 set transaction isolation level read uncommitted 来允许脏读,那么数据的处理由您决定,通常使用您的 T2 检查在提交之前没有更改的行版本。

    【讨论】:

      猜你喜欢
      • 2018-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-16
      • 1970-01-01
      相关资源
      最近更新 更多