您会选择使用悲观锁定的真实示例是什么?

时间:2019-02-27 01:28:14

标签: mysql sql database locking

我读过很多关于何时使用乐观锁和悲观锁的文章,我的基本理解是:

  • 乐观锁定更具扩展性,因此,如果可能的话,可以使用它
  • 在没有必要允许并发更新时使用悲观锁定

我还没有找到任何有用的例子来说明何时选择悲观锁定(明智的选择通常更可取)。

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

1 个答案:

答案 0 :(得分:1)

这几乎是过去这个问题的重复:Optimistic vs. Pessimistic locking

当您想保证以原子方式锁定多个资源时,悲观锁定非常有用。这有助于避免死锁。

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

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