mysql 表级锁之一lock table
1.lock table t1 read:
1.1.当前线程: 读/写当前表/其他表:
unlock tables;
lock table t1 read;
select * from t1;
INSERT INTO `t1` (`c2`, `c3`, `c4`) VALUES ('1', '1', '1');
select * from t2;
INSERT INTO `t2` (`c2`, `c3`, `c4`) VALUES ('1', '1', '1');
结果:

结论:当前线程 可读lock表,不可写lock表;不可读写其他表
1.2.其他线程: 读/写当前表/其他表:
其他线程可以读,不可以写;
select * from t1;
INSERT INTO `t1` (`c2`, `c3`, `c4`) VALUES ('1', '1', '1');

2.lock table t1 write
2.1.当前线程: 读/写当前表/其他表:
unlock tables;
lock table t1 write;
select * from t1;
INSERT INTO `t1` (`c2`, `c3`, `c4`) VALUES ('1', '1', '1');
select * from t2;
INSERT INTO `t2` (`c2`, `c3`, `c4`) VALUES ('1', '1', '1');
结果:

结论:当前线程 可读写lock表;不可读写其他表
2.2.其他线程: 读/写当前表/其他表:
其他线程执行以下读写会卡死等待中:
select * from t1;
INSERT INTO `t1` (`c2`, `c3`, `c4`) VALUES ('1', '1', '1');

3. 结论:
LOCK TABLES为当前线程锁定表。 UNLOCK TABLES释放被当前线程持有的任何锁。当线程发出另外一个LOCK TABLES时,或当服务器的连接被关闭时,当前线程锁定的所有表会自动被解锁。
如果一个线程获得一个表上的一个READ锁, 该持锁的线程和所有其他线程只能从表中读,不可写;
如果一个线程获得一个表上的一个WRITE锁,那么只有持锁的线程能READ或WRITE表,其他线程被阻止。
mysql 表级锁之一lock table的更多相关文章
- mysql 表级锁
表级锁:分为读锁和写锁: lock tables table_name read;//其他事务只能读,不能加写锁,要等待更新. SESSION 50 执行: mysql> update test ...
- MySQL学习笔记(五):MySQL表级锁和行级锁
一:概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制.比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking ...
- MySQL表级锁和行级锁
一:概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制.比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking ...
- MYSQL 表级锁 行级锁 页面锁区别
myisam存储引擎默认是表级锁 innodb存储引擎默认是行级锁 DBD存储引擎默认是页面锁 表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发出锁冲突的概率最高,并发度最低.行级锁:开锁大, ...
- [MySQL] 行级锁SELECT ... LOCK IN SHARE MODE 和 SELECT ... FOR UPDATE
一.译文 翻译来自官方文档:Locking Reads If you query data and then insert or update related data within the same ...
- MySQL行级锁,表级锁,页级锁详解
页级:引擎 BDB. 表级:引擎 MyISAM , 理解为锁住整个表,可以同时读,写不行 行级:引擎 INNODB , 单独的一行记录加锁 表级,直接锁定整张表,在你锁定期间,其它进程无法对该表进行写 ...
- MySQL行级锁、表级锁、页级锁详细介绍
原文链接:http://www.jb51.net/article/50047.htm 页级:引擎 BDB.表级:引擎 MyISAM , 理解为锁住整个表,可以同时读,写不行行级:引擎 INNODB , ...
- Mysql 的表级锁和行级锁
表级锁 MySQL表级锁分为读锁和写锁. 读锁 用法:LOCK TABLE table_name [ AS alias_name ] READ 释放锁使用UNLOCK tables.可以为表使用别名, ...
- Mysql的表级锁和行级锁
表级锁 MySQL表级锁分为读锁和写锁. 读锁 用法:LOCK TABLE table_name [ AS alias_name ] READ 释放锁使用UNLOCK tables.可以为表使用别名, ...
- MySQL 全局锁、表级锁、行级锁,你搞清楚了吗?
大家好,我是小林. 最近重新补充了<MySQL 有哪些锁>文章内容: 增加记录锁.间隙锁.net-key 锁 增加插入意向锁 增加自增锁为 innodb_autoinc_lock_mode ...
随机推荐
- EF命令行工具 migrate.exe 进行Code First更新数据库,6.3+使用ef6.exe
EF命令行工具 migrate.exe 进行Code First更新数据库,6.3+使用ef6.exe 使用EF的Code First迁移可以用于从Visual Studio内部更新数据库,但也可通过 ...
- Linux 压缩文件用法
# tar 命令:可以用来压缩或解压缩文件: # 压缩 tar -czvf filename.tar.gz files # 解压缩 tar -xzvf filename.tar.gz # gzip 命 ...
- 3D相册 复仇者联盟
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 应用层协议之DNS、DHCP
运输层为应用进程提供了端对端的通信服务,但不同的网络应用的应用进程之间,还需要有不同的通信规则.因此在运输层协议之上,还需要有应用层协议. 应用层中有这些常见的协议 域名系统:DNS 动态主机配置:D ...
- Hi3798MV200 恩兔N2 NS-1 (二): HiNAS海纳思使用和修改
目录 Hi3798MV200 恩兔N2 NS-1 (一): 设备介绍和刷机说明 Hi3798MV200 恩兔N2 NS-1 (二): HiNAS海纳思使用和修改 Hi3798MV200 恩兔N2 NS ...
- 【RocketMQ】MQ消息发送总结
RocketMQ是通过DefaultMQProducer进行消息发送的,它实现了MQProducer接口,MQProducer接口中定义了消息发送的方法,方法主要分为三大类: send同步进行消息发送 ...
- vue3封装筛选项
背景 项目开发中遇到筛选项,并且几个页面都有使用,依次写,太过于繁琐 筛选项解构如下 封装全局组件fjj-content <template> <div class="fj ...
- github.com/yuin/gopher-lua 踩坑日记
本文主要记录下在日常开发过程中, 使用 github.com/yuin/gopher-lua 过程中需要注意的地方. 后续遇到其他的需要注意的事项再补充. 1.加载LUA_PATH环境变量 在实际开发 ...
- iOS发送探针日志到日志系统的简单实现
通过参考Testin的SDK实现方式,我们大致可以确定他们背后的实现方式: 首先,通过加载Testin的SDK,然后收集各种七七八八的数据,再通过socket发送数据到云端. 云端我们已经有了,就是h ...
- Go学习笔记1
学习路线 2023-Go全链路工程师课纲 https://www.processon.com/view/link/63594cd97d9c0854f9ac855e 一.搭建环境 https://stu ...