【MySQL实战05】锁

MySQL 里面的锁大致可以分成全局锁表级锁行锁三类。数据库锁设计的初衷是处理并发问题。

全局锁

命令:Flush tables with read lock (FTWRL),使整个库处于只读状态,可以在客户端断开的时候自动释放。

使用场景:全库逻辑备份。

官方自带的备份工具 mysqldump,使用参数–single-transaction 时,导数据之前会启动一个事务,来确保拿到一致性视图,但只适用于所有的表都使用事务引擎的库,对于 MyISAM 这种不支持事务的引擎,如果备份过程中有更新,总是只能取到最新的数据,就破坏了备份的一致性,此时就需要使用 FTWRL 命令。对于全部是 InnoDB 引擎的库,建议选择使用–single-transaction 参数。

表级锁

表级别分为两种:表锁、元数据锁(meta data lock,MDL)。

表锁:语法为 lock tables … read/writeunlock tables 主动释放锁,也可以在客户端断开时自动释放。表

你可能感兴趣的:(MySQL实战笔记,MySQL,mysql,数据库)