1.读写锁

一.表读锁

给表加读锁同一个session可以读加锁表,但不能读其他表,也不可以写加锁表和其他表。

                  不同锁session可以读取加锁表和其他表,写其他表可以成功但是写加锁表会阻塞,等待锁释放才可以操作

1、session1: lock table mylock read; -- 给mylock表加读锁

2、session1: select * from mylock; -- 可以查询

3、session1:select * from tdep; --不能访问非锁定表

4、session2   :select * from mylock; -- 可以查询 没有锁

5、session2:update mylock set name='x' where id=2; -- 修改阻塞,自动加行写锁

6、session1:unlock tables; -- 释放表锁

7、session2:Rows matched: 1 Changed: 1 Warnings: 0 -- 修改执行完成

8、session1:select * from tdep; --可以访问

二.表写锁

给表加写锁同一个session可以读加锁表的数据,不能读其他表,可以写加锁表但不能写其他表。

                  不同session读加锁表会阻塞,可以读其他表,写加锁表会阻塞,可以写其他表。

1、session1: lock table mylock write; -- 给mylock表加写锁

2、session1: select * from mylock; -- 可以查询

3、session1:select * from tdep; --不能访问非锁定表

4、session1:update mylock set name='y' where id=2; --可以执行

5、session2:select * from mylock; -- 查询阻塞

6、session1:unlock tables; -- 释放表锁

7、session2:4 rows in set (22.57 sec) -- 查询执行完成

8、session1:select * from tdep; --可以访问

你可能感兴趣的:(1.读写锁)