MySQL 中有哪几种锁,列举一下?

MySQL 中有哪几种锁,列举一下?
根据锁粒度划分,存在以下三种锁类型:
- 表锁:开销较小,加锁速度快;锁定范围广,可能导致较高的锁冲突率,并发度较低;不会出现死锁。
- 行锁:开销较大,加锁速度较慢;可能会出现死锁;锁定粒度细,降低了锁冲突的概率,提高了并发度。
- 页锁:开销和加锁速度介于表锁和行锁之间;可能会出现死锁;锁定粒度介于表锁和行锁之间,并发度一般。
从兼容性的角度,有两种锁类型:
- 共享锁(S锁)也称为读锁(read lock),相互之间不会阻塞。
- 排他锁(X锁)也称为写锁(write lock),排它锁是阻塞的,同一时间只允许一个请求执行写操作,并阻止其他锁对正在写入的数据进行读取。
注意:兼容性和锁粒度是两个不同的概念。锁粒度指的是锁定的范围和粒度大小,而兼容性指的是不同类型的锁是否相互兼容,即是否可以同时存在多个不同类型的锁。