MySQL 锁机制的目的很简单:在并发场景下同时兼顾数据正确性和系统吞吐。理解它时,先不要背术语,先抓住“锁谁、为什么锁、会影响谁”。
按粒度看
常见有表锁和行锁。表锁影响范围大,但实现简单;行锁并发能力更好,是 InnoDB 处理高并发事务的基础。
按使用意图看
共享锁适合读,排他锁适合写。读写能不能并行,取决于当前拿到的锁类型以及事务隔离级别。
为什么会有间隙锁和临键锁
这是 InnoDB 为了处理可重复读和防止幻读引入的机制。它锁的不只是已有记录,还可能锁住记录之间的范围。
实际理解方式
排查锁问题时,重点看三件事:事务是否持有太久、SQL 是否命中索引、隔离级别是否带来了更大的锁范围。很多锁等待问题,本质上都出在这里。
正文完




