Skip to content
L edited this page Nov 10, 2020 · 4 revisions

按使用方式划分

乐观锁

自己实现,通过版本号

悲观锁

共享锁,多个事务,只能读不能写,加 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)知识及锁应用
面试官:你说说互斥锁、自旋锁、读写锁、悲观锁、乐观锁的应用场景

Clone this wiki locally