繁体   English   中英

何时使用悲观并发?

[英]When to use pessimistic concurrency?

在哪些情况下使用悲观并发?

悲观并发应该用于经常进行并发编辑的情况下,而不是在例外情况下使用。 当告知用户将不保存其编辑内容时,乐观并发可能会给用户带来震撼的结果,因此在正常情况下应避免这样做。

是的,当您绝对不能有两个人同时更改同一条记录时。 银行最常这样做。

“何时使用pess。锁定”到底是什么意思?

如果要处理DBMS管理的数据,则别无选择。 DBMS在每次更新和停止时都使用它,因为DBMS本身也无法选择以确保数据完整性。

甚至基于MVCC的系统(例如Oracle?)也别无选择,只能使用两阶段锁定来序列化活动以正确处理以下情况:

TX A启动,TX B启动; TX A插入ID 1; TX B插入ID 1; TX A检查约束; TX B检查约束; TX A提交; TX B提交。

如果允许A / B的约束检查忽略B / A完成的相同ID的插入,则数据库最终将违反密钥。

应用程序控制的锁最好仅是悲观的,前提是您可以确保在预期用户输入某些输入时(或正在执行任何可能导致长时间延迟的活动)不会使它们处于待处理状态。 但这是对相反问题“何时不使用它”的答案。

编辑

对于“何时使用它”的指示可能是,在竞争激烈的情况下,无论哪个事务“第二次发生”,您都希望“快速失败”。 这样可以确保您无法完成的事务不会占用过多的资源,并且这些资源可用于更快地完成“先到来”并获得锁定的事务(从而也可以更快地释放锁)。 但是,请务必意识到,您也增加了陷入死锁的可能性,并且由于锁是由应用程序控制的,因此您必须解决所有死锁。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM