0

我对 READ COMMITED 隔离级别有点困惑。如果事务 X(开始)读取一行,更改该行并再次读取该行,这是否被视为特定隔离级别的脏读?

4

1 回答 1

0

事务始终可以读取它所做的更改,而不管其事务隔离级别如何。这不是脏读。

READ COMMITTED 意味着您的事务将看到其他事务最近提交的更改。

READ UNCOMMITTED 意味着您的事务可以看到其他事务中所做的更改,即使它们尚未提交。那是脏读。这真的不太可能是你想要的。


重新发表您的评论。

假设我有一个书店应用程序。有人想买 100 本最新的丹布朗书。首先,我的应用程序将这本书的库存更新为零,然后尝试验证他们的信用卡。他们的信用卡没有足够的信用来支付这本书的 100 份,所以它被拒绝了。然后事务回滚,恢复库存的原始图书数量。

同时,您的应用程序正在监控库存水平以查看何时重新订购书籍。如果您使用 READ UNCOMMITTED,您可以很容易地看到库存减少到零。也就是说,在我的应用更新之后但在它回滚之前。您的应用程序非常高效,它会立即向出版商发送新订单以购买一盒新书。

几天后,你收到了额外的一盒书,但你仍然有旧书,所以你的书架上没有空间,额外的盒子留在过道上,直到有人绊倒它并伤害自己。:-(

如果您只使用 READ COMMITTED,您将不会为某人扭伤的脚踝负责。

于 2013-10-14T20:53:07.257 回答