数据库锁机制是保障事务隔离性与数据一致性的核心组件,其核心策略可分为以下维度:
一、锁粒度分级
- 1.表级锁(MySQL MyISAM引擎)
- •开销最小但并发度最低,适合读多写少的全表扫描场景
- 2.行级锁(InnoDB默认)
- •通过索引实现,
SELECT ... FOR UPDATE
触发X锁,需注意间隙锁(Gap Lock)对范围查询的影响
二、锁类型剖析
- 1.意向锁(Intention Lock)
- •IS/IX锁实现多粒度锁兼容性判断,避免逐行检查锁状态
- 2.Next-Key Lock
- •InnoDB特有,组合记录锁+间隙锁,解决幻读但可能导致死锁
三、死锁防治策略
- 1.检测机制
- •等待图检测(WAIT-FOR GRAPH)与超时回滚(
innodb_lock_wait_timeout
默认50秒)
- 2.规避方法
- •事务拆解:大事务拆为小事务降低持有锁时长
- •访问顺序:统一按照主键顺序访问表
四、监控工具链
-- 查看当前锁等待
SHOW ENGINE INNODB STATUS\G
-- 监控锁争用
SELECT * FROM performance_schema.events_waits_current;