MySQL锁的类型:

全局锁

是什么?

就是对整个数据库表实例加锁。

怎么加全局锁?

MySQL 提供了一个加全局读锁的方法,命令是 Flush tables with read lock (FTWRL)。当你需要让整个库处于只读状态的时候,可以使用这个命令,之后其他线程的以下语句会被阻塞:数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新类事务的提交语句。

使用场景?

做全库逻辑备份,也就是把整库每个表都 select 出来存成文本。

全局锁与MyISAM、InnoDB备份的关系

InnoDB+mysqldump(–single-transaction),可以在支持业务功能的时候,实现表数据备份。

mysqldump 使用参数–single-transaction 的时候,导数据之前就会启动一个事务,来确保拿到一致性视图。而由于 MVCC 的支持,这个过程中数据是可以正常更新的。

不支持事务的引擎,只能用全局锁来备份数据。

表锁