MySQL 里面的锁大致可以分成全局锁、表级锁和行锁三类。数据库锁设计的初衷是处理并发问题。
全局锁
命令:Flush tables with read lock (FTWRL),使整个库处于只读状态,可以在客户端断开的时候自动释放。
使用场景:全库逻辑备份。
官方自带的备份工具 mysqldump,使用参数–single-transaction 时,导数据之前会启动一个事务,来确保拿到一致性视图,但只适用于所有的表都使用事务引擎的库,对于 MyISAM 这种不支持事务的引擎,如果备份过程中有更新,总是只能取到最新的数据,就破坏了备份的一致性,此时就需要使用 FTWRL 命令。对于全部是 InnoDB 引擎的库,建议选择使用–single-transaction 参数。
表级锁
表级别分为两种:表锁、元数据锁(meta data lock,MDL)。
表锁:语法为 lock tables … read/write,用

本文介绍了MySQL中的锁机制,包括全局锁、表级锁(表锁与元数据锁MDL)和行锁(共享锁与排它锁),并讨论了死锁的概念和处理策略,提供了优化并发控制的方法。
订阅专栏 解锁全文
5104

被折叠的 条评论
为什么被折叠?



