全局锁
对整个数据库实例加锁,加锁后整个实例就处于只读状态,后续的DML写语句、DDL语句已经更新操作的事务提交语句都将被阻塞。
例:做全库的逻辑备份,对所有表进行锁定,从而获取一致性视图,保证数据的完整性。
加锁语句:flush tables with read lock;
释放语句:unlock tables;
表级锁
在MyISAM、InnoDB、BDB等存储引擎中。
分类:
- 表锁
-
- 加锁语句:lock tables 表名 read/write
-
- 解锁语句: lock tables/客户端断开连接
-
- 表共享读锁
-
-
- 读锁不会影响其他客户端的读操作,但是会影响自身和其他客户端的写操作。
-
-
- 表独占写锁
-
-
- 写锁不会影响自身的读和写操作,但是会影响其他客户端的读和写操作。
-
- 元数据锁
-
- 避免DML与DDL冲突,保证读写的正确性。
- 意向锁
-
- 为了避免DML在执行时,加的行锁与表锁冲突,在InnoDB中引入了意向锁,这样表锁不用检查每行数据是否加锁,使用意向锁来减少表锁的检查。
-
- 意向共享锁:与表锁共享锁(read)兼容,与表排它锁互斥。
-
- 意向排他锁:与表锁排它锁和共享锁都互斥,意向锁之间不会互斥。