MySQL锁机制:全局锁、表锁、行锁
MySQL锁分类 按锁粒度分类 全局锁(Global Lock) └─ FTWRL(Flush Tables With Read Lock) 表锁(Table Lock) ├─ 表级锁 ├─ 元数据锁(MDL Lock) └─ 意向锁(Intention Lock) 行锁(Row Lock) ├─ 记录锁(Record Lock) ├─ 间隙锁(Gap Lock) └─ Next-Key Lock(Record + Gap) 按锁模式分类 锁模式 英文名 兼容性 应用场景 共享锁(S锁) Shared Lock 读读兼容,读写互斥 SELECT … LOCK IN SHARE MODE 排他锁(X锁) Exclusive Lock 完全互斥 UPDATE、DELETE、SELECT … FOR UPDATE 1. 全局锁(Global Lock) 定义 锁住整个数据库实例,只读不可写。 命令 -- 加全局读锁 FLUSH TABLES WITH READ LOCK; -- 简称FTWRL -- 此时其他会话: SELECT * FROM account WHERE id = 1; -- ✅ 可以读 UPDATE account SET balance = 900 WHERE id = 1; -- ❌ 阻塞 INSERT INTO account VALUES (2, 'B', 500); -- ❌ 阻塞 -- 释放锁 UNLOCK TABLES; 应用场景 全库逻辑备份(保证数据一致性): ...