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

mysql-a07e4525-ccc1-4287-aec5-ebf3f277857c.png

根据锁粒度划分,存在以下三种锁类型:

  • 表锁:开销较小,加锁速度快;锁定范围广,可能导致较高的锁冲突率,并发度较低;不会出现死锁。
  • 行锁:开销较大,加锁速度较慢;可能会出现死锁;锁定粒度细,降低了锁冲突的概率,提高了并发度。
  • 页锁:开销和加锁速度介于表锁和行锁之间;可能会出现死锁;锁定粒度介于表锁和行锁之间,并发度一般。

从兼容性的角度,有两种锁类型:

  • 共享锁(S锁)也称为读锁(read lock),相互之间不会阻塞。
  • 排他锁(X锁)也称为写锁(write lock),排它锁是阻塞的,同一时间只允许一个请求执行写操作,并阻止其他锁对正在写入的数据进行读取。

注意:兼容性和锁粒度是两个不同的概念。锁粒度指的是锁定的范围和粒度大小,而兼容性指的是不同类型的锁是否相互兼容,即是否可以同时存在多个不同类型的锁。

标签: java, Java面试题, MySQL, Java问题合集, MySQL面试题, Java编程, Java问题精选, Java常见问题