MySQL之锁定语句

1.锁定语句

MySQL支持对MyISAM和MEMORY存储引擎的表进行表级锁定,对BDB存储引擎的表进行页级锁定对INNODB存储引擎的表进行行级锁定
默认情况下,表锁和行锁都是自动获得,不需要额外的命令,但是在有的情况下,用户需要明确的进行锁表或者进行事务的控制,以便确保整个事务的完整性。

MySQL中的锁就相当于Java线程中的锁,当一个表被添加锁时,其他要获得这个锁的线程需要等待解锁才能操作

2.创建锁的语法

在这里插入图片描述

3.解锁的语法

在这里插入图片描述

4.例子

mytest表
在这里插入图片描述
my_log表
在这里插入图片描述
1.为表mytest添加read锁

LOCK TABLE test.`mytest` READ;

2.执行查看mytest表操作

SELECT * FROM test.`mytest`;

在这里插入图片描述
没有报错,正确显式

3.执行查看其他表操作

SELECT * FROM test.`my_log`;

在这里插入图片描述
错误,不能查询!

4.执行修改mytest表操作

DELETE FROM test.`mytest`  WHERE id=7;
-- 或者执行
UPDATE  test.`mytest` SET money=1000  WHERE id=7;

都出现这个错误
在这里插入图片描述

5.执行向其他表my_log中插入数据操作

insert into my_log(note) values('锁定mytest 的read 操作,能像其他表种添加数据吗?')

在这里插入图片描述
不能执行向其他表插入数据操作。

6.执行解锁后执行任何操作都可以成功!

5.总结

1.在使用锁定语句的时候可以锁定当前表,可以添加read锁和write锁

2.只要添加了锁,就表示其他线程获取的时候需要等待加锁线程解锁才可以操作。

3.read锁的添加会导致只允许读取加锁的表只能对当前表执行查询操作不允许对表添加和修改操作也不能对其他表执行任何操作(包括读也不行)

4.可以通过unlock tables 取消全部的锁

以上纯属个人见解,如有问题请联本人!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值