243 字
1 分钟
悲观锁 vs 乐观锁

悲观锁 vs 乐观锁#

在多用户环境中,锁对于保持数据一致性和完整性至关重要。它们可以防止可能导致数据不一致的并发修改。

悲观锁假设冲突一定会发生,因此在进行任何更改之前先对数据加锁。在锁释放之前,其他用户无法访问或更新该数据。

乐观锁假设冲突较为罕见。它允许多个用户同时访问数据,并在提交更改时检查是否存在冲突;如果检测到冲突,则回滚该操作。

最佳实践#

可以参考以下最佳实践:

  • 将持锁时间降到最低,以减少争用。
  • 尽量在最细粒度(如行级而非表级)上加锁。
  • 为因冲突失败的事务实现重试逻辑。
  • 悲观锁有利于数据完整性,但可能影响性能。
  • 乐观锁更有利于效率与性能。
悲观锁 vs 乐观锁
https://fuwari.vercel.app/posts/pessimistic-vs-optimistic-locking/
作者
CC代码日志
发布于
2025-10-27
许可协议
CC BY-NC-SA 4.0