首页 > 数据库 >mysql 表级锁之一lock table

mysql 表级锁之一lock table

时间:2023-11-12 22:22:06浏览次数:33  
标签:lock 读写 t1 线程 其他 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');
对其他表的操作不影响: 结论:其他线程 可读lock表,不可写lock表; 可读写其他表  

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');
对其他表的操作不影响: 结论:其他线程 不可读写lock表; 可读写其他表  

3. 结论:

LOCK TABLES为当前线程锁定表。 UNLOCK TABLES释放被当前线程持有的任何锁。当线程发出另外一个LOCK TABLES时,或当服务器的连接被关闭时,当前线程锁定的所有表会自动被解锁。 

如果一个线程获得一个表上的一个READ锁该持锁的线程和所有其他线程只能从表中读,不可写;
如果一个线程获得一个表上的一个WRITE锁,那么只有持锁的线程能READ或WRITE表,其他线程被阻止

 

标签:lock,读写,t1,线程,其他,table,表级
From: https://www.cnblogs.com/zhanchenjin/p/17827985.html

相关文章

  • JVM系列-第9章-StringTable(字符串常量池)-cnblog
    title:JVM系列-第9章-StringTable(字符串常量池)tags:-JVM-虚拟机categories:-JVM-1.内存与垃圾回收篇keywords:JVM,虚拟机。description:JVM系列-第9章-StringTable(字符串常量池)。cover:'https://gitee.com/youthlql/randombg/raw/master/logo/jvm.png......
  • c#如何更改 DataTable 列的顺序
    dataTable.Columns["Qty"].SetOrdinal(0);dataTable.Columns["Unit"].SetOrdinal(1);扩展方法:publicstaticclassDataTableExtensions{publicstaticvoidSetColumnsOrder(thisDataTabletable,paramsString[]columnNames){......
  • IPTABLES的参数解释
    iptables手册页总览用iptables-ADC来指定链的规则,-A添加-D删除-C修改iptables-[RI]chainrulenumrule-specification[option]用iptables-RI通过规则的顺序指定iptables-Dchainrulenum[option]删除指定规则iptables-[LFZ][chain][option]用iptables-LFZ链名[......
  • CompletableFuture 学习
    创建异步任务CompletableFuture创建异步任务,一般有supplyAsync和runAsync两个方法supplyAsync执行CompletableFuture任务,没有返回值//使用默认内置线程池ForkJoinPool.commonPool(),根据supplier构建执行任务publicstatic<U>CompletableFuture<U>supplyAsync(Suppli......
  • C++ insert into tables of pgsql via libpq-fe.h and compile by g++-13
    1.Installlibpq-devsudoaptinstalllibpq-devlocatelibpq-fe.h/usr/include/postgresql/libpq-fe.h 2.createtablet1createtablet1(idbigserialnotnullprimarykey,authorvarchar(40)notnull,commentvarchar(40)notnull,contentvarchar(40)notn......
  • Netfilter和iptables的实现机制(Linux)
    一:NetfilterNetfilter是是集成到Linux内核协议栈中的一套防火墙系统。它有4种类型,包括filter、nat、mangle、raw,具体是哪一种表,取决于数据包的处理方式。4种类型如下表所示:表类型说明包含的链接filter显示所有区域及其配置信息的列表INPUT、FORWARD、OUTPUTnat显示默认区域PREROTIN......
  • KubeBlocks v0.7.0 发布!支持引用外部组件,解耦备份 API,还支持了 Pika!
    我们很高兴地宣布KubeBlocksv0.7.0正式发布!在此版本中,KubeBlocks已支持31个开源数据库引擎,包括MariaDB、Elasticsearch、Pulsar和Pika等新的add-ons,为K8s用户提供了更广泛选择的同时,也延续了相同的用户体验。Highlights支持引用外部组件一些数据库集群依赖元数据存储进......
  • 设计模式 - Immutable 模式(Java不变集合类 vs Google Guava不变集合类)
    总结JDK中的unmodifiableList的构造函数是对原始集合的浅拷贝,而Guava.ImmutableList.copyOf是对原始集合的深拷贝 publicclassImmutableDemo{publicstaticvoidmain(String[]args){List<String>originalList=newArrayList<>();originalList.add("a"......
  • el-table fixed 之后 遮挡滚动条 或者 左浮动之后 遮挡合计列 滚动条不能拖动
    1.第一步讲浮动的table事件穿透.el-table__fixed,.el-table__fixed-right{ pointer-events:none;}/*表格固定列-鼠标事件穿透*/2.第二步 操作列浮动后按钮可点击.el-table__fixedtd,.el-table__fixed-righttd,.el-table__fixedth,.el-table__fixed-......
  • 【Qt初入江湖】Qt QSqlTableModel 底层架构、原理详细描述
    鱼弦:内容合伙人、新星导师、全栈领域创作新星创作者、51CTO(Top红人+专家博主)、github开源爱好者(go-zero源码二次开发、游戏后端架构https://github.com/Peakchen) QtQSqlTableModel是Qt中用于实现基于数据库表格的模型类,它继承自QAbstractTableModel。QSqlTableModel封装了对......