我对READ COMMITED隔离级别有点困惑。如果事务X(启动)读取行、更改行并再次读回行,这是否被认为是针对特定隔离级别的脏读?
发布于 2013-10-15 04:53:07
无论事务隔离级别如何,事务始终可以读取它所做的更改。这并不是一个恶意的读取。
READ COMMITTED意味着您的事务将看到其他事务所做的最近提交的更改。
READ UNCOMMITTED意味着您的事务可以看到在其他事务中所做的更改,即使它们还没有提交。这是一个肮脏的阅读。这真的不太可能是你想要的。
请回复您的评论。
假设我有一个书店的应用程序。有人想买100本最新的丹·布朗的书。首先,我的应用程序将这本书的库存更新为零,然后尝试验证他们的信用卡。他们的信用卡没有足够的信用卡支付这本书的100册,所以这本书被拒绝了。然后,事务回滚,恢复原始的库存图书数量。
与此同时,你的应用程序正在监控库存水平,以确定何时重新订购图书。如果您使用READ UNCOMMITTED,您可以很容易地看到库存减少到零。也就是说,在我的应用更新之后,但在它回滚之前。您的应用程序非常高效,它会立即向出版商发送一个新订单,以获取一盒新书。
几天后,你收到了额外的一盒书,但你仍然有旧的库存,所以你的书架上没有空间,额外的盒子留在过道里,直到有人被它绊倒并伤害了自己。:-(
如果你只使用了READ COMMITTED,你就不会对别人扭伤的脚踝负责。
https://stackoverflow.com/questions/19368891
复制相似问题