MySQL数据库锁—(三)行锁和间隙锁

一、全局锁
全局锁是对整个数据库实例加锁,整个库处于只读状态。

flush tables with read lock

适用场景
全局锁适用于做全库逻辑备份,但是整个库处于只读状态,在备份期间,所有的更新操作、DDL将会被阻塞,会对业务产生影响。

single-transaction
mysqldump备份时可以使用single-transaction参数,在备份数据之前启动一个事务,借助于MVCC获取到一致性视图,保证在备份的过程中,还支持数据的更新操作。
但是single-transaction只能用于支持事务的引擎,比如MyISAM不支持事务,所以使用MyISAM引擎的时候,是无法使用single-transaction的。

二、表级锁
表级锁分为表锁和元数据锁。

1、表锁
表锁从名字上就可以看出锁的是数据库表(Table),语法为:

继续阅读MySQL数据库锁—(三)行锁和间隙锁