什么是事务(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 值。
T1 | T2 |
---|---|
read(x) | |
X=X-5 | |
write(x) | |
read(x) | |
x=x+5 | |
write(x) | |
ROLLBACK | |
犯罪 |
以上是 什么是事务(DBMS)中的脏读? 的全部内容, 来源链接: utcz.com/z/357783.html