一、介绍
表级锁,每次操作锁住整张表。锁定粒度大,发生锁冲突的概率最高,并发度最低。应用在MyISAM、 InnoDB、BDB等存储引擎中,我们接下来所讲解的表级锁主要演示的是InnoDB引擎下的表级锁。
对于表级锁,主要分为以下三类:
- 表锁:锁的就是整张表
- 元数据锁(meta data lock,MDL)
- 意向锁
二、表锁分类
对于表锁,分为两类:
- 表共享读锁(read lock) ,也称为
读锁
- 表独占写锁(write lock),也成为
写锁
三、语法
-
加锁:
lock tables 表名... read/write
。当然我们也可以一次性执行多张表,read:加读锁;write:加写锁。
-
释放锁:
unlock tables / 客户端断开连接
。
四、特点
A. 读锁
左侧为客户端一,对指定表加了读锁,客户端一显然是可以去读取这张表的数据的,但是客户端一并不能进行这张表的写入操作;不会影响右侧客户端二的读,但是会阻塞客户端二的写。
五、测试
读锁:它不会阻塞读,但是会阻塞其他客户端的写
写锁:其他客户端是不能读的,也不能写;但是当前客户端既能读也能写。
左侧为客户端一,对指定表加了写锁,会阻塞右侧客户端的读和写。
测试:
结论: 读锁不会阻塞其他客户端的读,但是会阻塞写。写锁既会阻塞其他客户端的读,又会阻塞其他客户端的写。