| 锁类型 | 能干什么 |
|---|---|
| 全局锁 | 锁住整个数据库,让所有表进入只读状态。主要用于全库备份,保证备份数据一致。 |
| 表锁 | 锁住整张表,防止其他事务同时修改或读取(取决于读锁/写锁)。 |
| MDL锁(元数据锁) | 保护表结构,防止查询时别人修改表结构(比如 ALTER TABLE)。 |
| 意向锁 | 表示"某些行已经被锁了",方便判断能不能加表锁,提高效率。 |
| AUTO-INC锁 | 保证自增字段生成的值不重复。 |
| 行锁 | 锁住某几行数据,提高并发能力,避免多个事务同时修改同一条数据。 |
| Record Lock(记录锁) | 锁住某一条具体记录。 |
| Gap Lock(间隙锁) | 锁住记录之间的空隙,防止别人插入数据导致幻读。 |
| Next-Key Lock(临键锁) | 同时锁记录和间隙,解决可重复读下的幻读问题。 |
一句话记:
全局锁管整个库,表锁管整张表,行锁管几条数据;MDL防表结构变化,Gap/Next-Key主要防幻读。