Mysql的lock tables和unlock tables

本文详细解析了MySQL中lock tables命令的使用,包括读锁定和写锁定的不同应用场景。读锁定允许本线程读取数据,阻止其他线程写入,而写锁定则独占表的读写权限,阻止所有其他线程的读写操作。文章还提到了MyISAM表与InnoDB表在锁定行为上的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://blog.youkuaiyun.com/sunhuaquan/article/details/6202635

1 lock table 读锁定

对t1表加只读锁  本线程和其他线程只能读不能写

lock tables t1 read;

unlock tables; 释放读锁


对t1表加只读锁增加local选项  本线程只读,其他线程可insert,不能update

lock tables t1 read local;


注意:user表必须为Myisam表,以上测试才能全部OK,如果user表为innodb表,则lock tables user read local命令可能没有效果,也就是说,如果user表为innodb表,第6时刻将不会被阻塞,这是因为INNODB表是事务型的,对于事务表,例如InnoDB和BDB,--single-transaction是一个更好的选项,因为它不根本需要锁定表


2 lock table 写锁定

如果一个线程在一个表上得到一个WRITE锁,那么只有拥有这个锁的线程可以从表中读取和写表。其它的线程被阻塞


lock tables t1 write;   t1表为Myisam类型表


转载于:https://my.oschina.net/direnjie/blog/616856

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值