常见的锁
常见的有读写锁,也成为共享锁、排它锁;间隙锁;行锁、表锁;
InnoDB存储引擎会根据隔离级别自动加锁,但是也可以主动加锁;
select … … for update(排它锁); select … lock in share mode(共享锁)
1 | show open tables; |
各种锁的概念:
公平锁、非公平锁、自旋锁、可重入锁、偏向锁、轻量级锁、重量级锁、读写锁、互斥锁等。
公平锁与⾮公平锁
公平锁:是指按照申请锁的顺序来获取锁;
⾮公平锁:是指获取锁的顺序并不是按照申请锁的顺序,有可能后申请的⽐先申请的优先获取锁,有可能会造成优先级反转或者饥饿现象。
共享锁
共享锁,读写锁:可以被多个资源持有。
独享锁
独享锁,互斥锁:锁⼀次只能被⼀个资源所持有,其他的按照设计的策略行事,java中Synchronized而言,会进入Entry set列表等待。
乐观锁
对共享数据的操作很少或者不会发生修改的。采取的策略是更新数据的时候尝试更新,如果不对继续重试,如CAS。