后端岗位面试题更新 2026-08-05

请列举 MySQL 中存在的锁类型,并简要说明各自的使用场景或作用。

后端开发技术原理MySQL

考察说明

考查候选人对 MySQL 锁机制的分类和基本原理的掌握程度。

回答思路

  1. 【回答框架 1】MySQL 锁可从多个维度分类。按粒度可分为全局锁、表级锁(如表锁、元数据锁)和行级锁(如记录锁、间隙锁、临键锁),不同粒度影响并发度与锁开销。
  2. 【回答框架 2】按读写性质可分为共享锁(S 锁)和排他锁(X 锁),S 锁之间兼容,S 与 X、X 与 X 互斥。
  3. 【回答框架 3】按实现机制还可分为悲观锁(数据库锁机制实现)与乐观锁(通过版本号或条件更新实现)。
  4. 【回答框架 4】对于表级锁,可提及 MyISAM 主要使用表锁,InnoDB 支持行锁,以及意向锁用于协调表锁与行锁。
  5. 【回答框架 5】对于行级锁,可说明 InnoDB 中记录锁锁住索引记录,间隙锁锁住记录间空隙,临键锁为记录锁和间隙锁的组合,用于解决幻读问题。
  6. 【关键点 1】MySQL 锁按粒度分全局锁、表级锁、行级锁。
  7. 【关键点 2】共享锁与排他锁用于控制并发读写。
  8. 【关键点 3】InnoDB 行锁包括记录锁、间隙锁、临键锁。
  9. 【关键点 4】意向锁用于表锁与行锁的协调。
  10. 【关键点 5】乐观锁通过版本控制实现,适用于并发冲突较少的场景。
  11. 【易错点 1】不能混淆表锁与行锁的实际支持引擎,MyISAM 只支持表锁,InnoDB 支持行锁。
  12. 【易错点 2】间隙锁主要存在于可重复读隔离级别下,用于防止幻读,不是所有事务隔离级别都默认加间隙锁。
  13. 【易错点 3】临键锁是记录锁与间隙锁的组合,不是独立的新锁类型,容易误以为是三种独立锁。