数据库系统原理:悲观锁、乐观锁

  • 悲观锁

    • 总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁。
    • 传统的关系型数据库中用到了很多这种锁机制,比如行级锁、表级锁、读锁、写锁等,都是在做操作之前先上锁。
    • 使用场景:多写的场景
    • 实现方式:加锁
  • 乐观锁

    • 总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据。如果别人更新了数据则放弃操作。
    • 乐观锁并未真正加锁
    • 使用场景:多读的场景
    • 实现方式:
      • CSA(Compare and Swap)机制
        image
      • 版本号机制
        image
原文地址:https://www.cnblogs.com/xiaobaizzz/p/12305518.html