什么是事务(DBMS)中的脏读?

当许多事务同时执行时,我们称它们为并发事务。需要并发来提高时间效率。如果有许多事务试图访问相同的数据,就会出现不一致。需要并发控制来保持数据的一致性。

为了并发运行事务,我们将它们的操作交错。每笔交易都会获得一部分计算时间。

交易中的问题

这会导致以下问题 -

  • 丢失更新问题。(WW冲突)

  • 脏读/临时更新。( WR 冲突)

  • 不可重复读/不正确分析问题。(读写冲突)

所有这些都是因为隔离被打破了。

让我们讨论脏读或临时更新。

脏读

脏读是对未提交数据的读取。如果某个特定行被另一个正在运行的应用程序修改并且尚未提交,我们也会运行一个应用程序来读取具有相同未提交数据的同一行。这就是我们所说的脏读状态。

一个主要的事情是脏读者必须停止阅读脏书。

我们可以尝试使用共享锁来防止其他事务修改该行,如果在这里进行的话。

脏读问题示例

示例 1

  • 第 1 步- 考虑我们有一个在线购物系统,用户可以在其中同时购买和查看买家产品。

  • 第 2 步- 让我们假设一个用户尝试购买产品的情况,一旦用户购买了产品,更新库存中的计数值将立即改变。

  • 第 3 步- 让我们看库存中有 10 件商品,但现在是 9 件。

  • 第 4 步- 此外,由于此交易,还将与计费网关进行通信。

  • 步骤 5 - 同时,如果有其他用户同时进行了交易,则新用户将能够看到库存中的 9 件商品。

  • 第 6 步- 但是,让我们假设第一个用户由于某些错误或资金不足而无法完成他/她的交易。

  • 步骤 7 - 然后,在这种情况下,第一个用户完成的交易将回滚,现在库存价值将再次变为 10。

  • 第 8 步- 但是,当第 2 个用户进行交易时,库存中的无物品为 9。

  • 步骤 9 - 这称为脏数据,整个问题称为脏问题。

示例 2

考虑另一个例子

让 T2 读取 T1 对 X 的更新值,但 T1 失败并回滚。因此,T2 读取了错误的 X 值。

T1T2
read(x)
X=X-5
write(x)

read(x)

x=x+5

write(x)
ROLLBACK

犯罪

以上是 什么是事务(DBMS)中的脏读? 的全部内容, 来源链接: utcz.com/z/357783.html

回到顶部