首页 > 解决方案 > 您会选择使用悲观锁定的真实示例是什么?

问题描述

我已经阅读了很多关于何时使用乐观与悲观锁定的文章,我的基本理解是:

我还没有找到任何有用的例子来说明何时选择悲观锁定是明智的(似乎乐观通常是首选)。

如果有人能回答一个具体的例子,那将非常有帮助:假设我们有一张信用卡/账户表,我们想要授权一笔交易。完整性非常重要,我不明白为什么允许并发更新会有用。这是我们将使用悲观锁定的示例吗?

标签: mysqlsqldatabaselocking

解决方案


这几乎是过去这个问题的重复:乐观与悲观锁定

悲观锁定适用于您想要保证以原子方式锁定多个资源的情况。这有助于避免死锁。

乐观锁定依赖于非原子锁定,从某种意义上说,您可能需要在事务期间锁定多个资源,如果您乐观地获取锁,则一次执行一个,因此相对于其他并发存在竞争条件交易。

悲观锁定也有一些风险。如果事实证明您根本不需要锁定它们,您可能会不必要地锁定一些资源。它可能取决于您的事务逻辑,但您必须将它们锁定为原子锁请求的一部分,以防万一您确实需要它们。


推荐阅读