各种锁

乐观锁(Pessimistic)

写锁优先机制,读锁在锁定某一代码块时,如果没有写锁竞争,就会获得该锁的权限,如果进行锁定时发现有写锁正在竞争,那么就会抛出例外,需要重新操作进行锁定,竞争标志则是
long stamp = lock.tryOptimisticRead();//有竞争返回0
lock.validate(stamp);//有竞争返回true

悲观锁(Optimistic)

再用读取锁锁定一块代码时,另一个读取锁依然可以进入该代码块,而写锁不可进入,在用写锁锁定的一段代码时,读锁和写锁都不能进入该代码块

结论

两种锁时对读写而言,悲观锁是读有优势,乐观锁是写有优势;
所以乐观锁时写少的情况,悲观锁时读少的情况

行锁

MySql中粒度最小的一种锁,对当前操作行进行加锁,触发数据库操作冲突概率低,并发度高,加锁粒度小,加锁开销大,加锁慢,会出现死锁

表锁

MySql中粒度最大的一种锁,对当前操作的整张表进行加锁,触发数据库操作(锁)冲突概率高,并发度最低,加锁粒度大,加锁开销小,加锁块,不会出现死锁

你可能感兴趣的:(各种锁)