全局锁就是数据锁范锁表锁对整个数据库实例加锁。MySQL 提供了一个加全局读锁的全局方法,命令是 Flush tables with read lock (FTWRL)。当你需要让整个库处于只读状态的行级时候,可以使用这个命令,之后其他线程的以下语句会被阻塞:数据更新语句(数据的增删改)、数据定义语句(包括建表、对于修改表结构等)和更新类事务的数据锁范锁表锁提交语句。你可以理解为,全局锁基本上把数据所所有的全局变更语句都锁住了 。
全局锁的行级典型场景应用场景是全库逻辑备份,也就是把整个库每个表都 select 出来存起来。上面说到全局锁会锁住所有变更语句,但这只是对于对于 MyISAM 存储引擎而言的。对于 Innodb 而言,其可以利用 MVCC 实现数据的数据锁范锁表锁一致性视图,从而不需要锁整个库就可以实现全库的数据备份 。
表级锁可以分为:表锁