MySQL中的锁定语句: lock tables 和 unlock tables

lock tables 用于锁定当前线程的表。如果表被其他线程锁定,则当前线程会等待,直到可以获取所有的锁定为止。

unlock tables 用于释放当前线程获得的任何锁定。

一个获得表锁和释放表锁的例子
session_1 session_2

获得表 t11 的read 锁定:

lock table t11 read;

 

当前session可以查询该表记录:

select * from  t11 where c1 = 131072.20

其他session也可以查询该表的记录:
select * from  t11 
 

其他session插入锁定表会等待获得锁:

INSERT INTO t11 VALUES(123.0,123.0)

等待。。。

释放锁:

unlock tables

等待。。。
 

session获得锁,插入操作完成:

1 queries executed, 1 success, 0 errors, 0 warnings

查询:insert into t11 values(123.0,123.0)

共 1 行受到影响

执行耗时 : 45.100 sec
传送时间 : 0 sec
总耗时 : 45.100 sec

 查看表数据:

 select * from  t11 where c1 = 123.0                        

 查看表数据:

 select * from  t11 where c1 = 123.0

原文地址:https://www.cnblogs.com/kate7/p/13357439.html