悲观锁(Pessimistic Lock): 顾名思义,持悲观情绪,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。
悲观锁会假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作。
传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。
乐观锁(Optimistic Lock):持乐观情绪,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制,乐观锁适用于多读的应用类型,这样可以提高吞吐量。
乐观锁:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。
本文深入探讨了悲观锁和乐观锁两种并发控制机制。悲观锁在访问数据时预先上锁,防止并发修改,适合高冲突场景;而乐观锁假设很少发生并发冲突,在更新时检查并处理冲突,适用于读多写少的情况。这两种锁机制广泛应用于数据库及分布式系统中,以确保数据完整性。
242





