全局锁
如何使用(语法介绍)
全局锁,顾名思义,就是对整个数据库实例加锁,它是粒度最大的锁。
在 MySQL 中通过执行 flush tables with read lock 指令加全局锁:
-- 加全局锁
flush tables with read lock
指令执行完,整个数据库就处于只读状态了,其他线程执行以下操作,都会被阻塞:
- 数据更新语句被阻塞,包括 insert, update, delete 语句;
- 数据定义语句被阻塞,包括建表 create table,alter table、drop table 语句;
- 更新操作事务 commit 语句被阻塞;
MySQl 释放锁有 2 种方式:
- 执行 unlock tables 指令:unlock tables;
- 加锁的会话断开,全局锁也会被自动释放
效果演示
全局锁小结
通过上述的实例可以看出:
-
当加全局锁时,库下面所有的表都处于只读状态;
-
当