锁 - zLulus/My_Note GitHub Wiki
按使用方式划分
乐观锁
自己实现,通过版本号
悲观锁
共享锁,多个事务,只能读不能写,加 lock in share mode
按锁级别划分
排它锁
如果事务T对A加上排它锁,则其它事务都不能对A加任何类型的锁。获准排它锁的事务既能读数据,又能写数据。
MYSQL用法
SELECT ... FOR UPDATE
共享锁
如果事务T对A加上共享锁,则其它事务只能对A再加共享锁,不能加其它锁。获准共享锁的事务只能读数据,不能写数据。
MYSQL用法
SELECT ... LOCK IN SHARE MODE;
按锁的粒度划分
行级锁
行级锁是Mysql中锁定粒度最细的锁。行级锁开销大,加锁慢,锁定粒度最小,发生锁冲突概率最低,并发度最高。
行级锁分为共享锁和排它锁。
页级锁
页级锁是MySQL中锁定粒度介于行级锁和表级锁中间的一种锁。一次锁定相邻的一组记录。
表级锁
表级锁开销小,加锁快,锁定粒度大、发生锁冲突最高,并发度最低。
表级锁分为表共享锁和表独占锁。
参考资料
MySQL数据库的锁机制
sql server锁(lock)知识及锁应用
面试官:你说说互斥锁、自旋锁、读写锁、悲观锁、乐观锁的应用场景