Skip to content

11_悲观锁和乐观锁

  • 悲观锁
    • 悲观锁(Pessimistic Lock),顾名思义,总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以都会加锁。
    • 传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁,都是在做操作之前先加锁。
    • 悲观锁的实现,往往依靠数据库的锁机制,通过数据库提供的锁接口实现,这也是大部分人对悲观锁的理解。
  • 乐观锁
    • 乐观锁(Optimistic Lock),顾名思义,总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会加锁。
    • 乐观锁适用于多读的应用类型,这样可以提高吞吐量。
    • 乐观锁的实现,往往依靠数据版本(version)记录机制,通过版本号机制实现,这也是大部分人对乐观锁的理解。