📝个人主页:五敷有你
🔥系列专栏:面经
⛺️稳中求进,晒太阳
表级锁
介绍
对于表锁,分为两类:
- 表共享读锁
- 表独占写锁
语法
1. 加锁:lock tables 表名... read/write
2. 释放锁:unlock tables /客户端断开。
特点:
1)读锁:不影响所有客户端的读,但会阻止所有客户端的写。
如图加了读锁后,进行操作。
结果显示,加了读锁不会影响所有客户端的读,但是会阻塞客户端的写。
2)写锁:会阻塞其他客户端的读,又会阻塞 其他客户端的写。
如图加了写锁,进行操作。
结果显示:加了写锁不会影响本客户端的写和读,但其他客户端无法读写。
元数据锁(meta data lock,MDL)
MDL加锁过程是系统自动控制,无需显式使用,在访问一张表的时候会自动加上。MDL锁主要作用是维 护表元数据的数据一致性,在表上有活动事务的时候,不可以对元数据进行写入操作。为了避免DML与 DDL冲突,保证读写的正确性。
这里的元数据,大家可以简单理解为就是一张表的表结构。 也就是说,某一张表涉及到未提交的事务 时,是不能够修改这张表的表结构的。
意向锁
为了避免DML在执行时,加的行锁与表锁的冲突,在InnoDB中引入了意向锁,使得表锁不用检查每行 数据是否加锁,使用意向锁来减少表锁的检查。