转自:http://blog.csdn.net/lifaming15/article/details/47904557
最近再找一些MySQL锁表原因,整理出来一部分sql语句会锁表的,方便查阅,整理的不是很全,都是工作中碰到的,会持续更新
笔者能力有限,如果有不正确的,或者不到位的地方,还请大家指出来,方便你我,方便大家。
此测试环境
mysql 5.5 基于innodb 引擎

[sql] view plaincopy
insert into table1 values select … from table2 ….

此种方法,会锁table2
[sql] view plaincopy
delete table1 from table1 inner join table2 on table1.id=table2.id …

此种方法,会锁table2
[sql] view plaincopy
update tabel1,table2 set table1.name=’feie’ where table1.id=table2.id

此种方法,会锁table2
[sql] view plaincopy
update tabel1,table2 set table1.name=’feie’ where table1.id=table2.id and table1.id=1;

此种方法,会锁table2.id=1的记录
—————————————–第二次编辑分割线————————————–
假设kid
是表table 的 一个索引字段 且值不唯一

1.如果kid 有多个值为12的记录那么:

update table set name=’feie’ where kid=12;

会锁表

2.如果kid有唯一的值为1的记录那么:

update table set name=’feie’ where kid=1;

不会锁

总结:用索引字段做为条件进行修改时, 是否表锁的取决于这个索引字段能否确定记录唯一,当索引值对应记录不唯一,会进行锁表,相反则行锁。
如果有两个delete
kid1 与 kid2是索引字段

语句1 delete from table where kid1=1 and kid2=2;

语句2 delete from table where kid1=1 and kid2=3;

这样的两个delete 是不会锁表的

语句1 delete from table where kid1=1 and kid2=2;

语句2 delete from table where kid1=1 ;

这样的两个delete 会锁表

总结:同一个表,如果进行删除操作时,尽量让删除条件统一,否则会相互影响造成锁表

Mysql 会导致锁表的语法相关推荐

  1. mysql锁表更新_Mysql InnoDB 数据更新导致锁表

    一.数据表结构 CREATE TABLE `jx_attach` ( `attach_id` int(11) NOT NULL AUTO_INCREMENT, `feed_id` int(11) DE ...

  2. mysql 导致锁表 count_mysql count 锁表

    数据库锁表与解锁 一.mysql 锁定表:LOCK TABLES tbl_nam... 数据库锁表与解锁 一.mysql 锁定表:LOCK TABLES tbl_nam... mysql锁测试_计算机 ...

  3. mysql delete 会锁表吗_MySQL高压缩引擎TokuDB 揭秘

    原文出处:http://mysql.taobao.org/monthly/2017/07/04/ HybridDB for MySQL(原名petadata)是面向在线事务(OLTP)和在线分析(OL ...

  4. mysql delete 会锁表吗_我想进大厂之 MYSQL 夺命连环13问

    来源 | 科技缪缪 想进大厂,mysql不会那可不行,来接受mysql面试挑战吧,看看你能坚持到哪里? 能说下 myisam 和 innodb 的区别吗? myisam引擎是5.1版本之前的默认引擎, ...

  5. mysql insert是锁表还是锁行_mysql 锁表还是锁行

    关于mysql的锁行还是锁表,这个问题,今天算是有了一点头绪,mysql 中 innodb是锁行的,但是项目中居然出现了死锁,锁表的情况.为什么呢?先看一下这篇文章. 做项目时由于业务逻辑的需要,必须 ...

  6. MySQL InnoDB update锁表问题Record Locks

    最近做的项目中出现了锁表的问题,导致表无法进行事务(DML)操作,经过排查发现,我们项目中的购物车表有个字段cart_id为uuid类型,并且未设置索引,这里的场景是根据cart_id进行更新内容,M ...

  7. mysql行级锁 表级锁 页级锁详细介绍_MySQL行级锁、表级锁、页级锁详细介绍

    页级:引擎 BDB. 表级:引擎 MyISAM , 理解为锁住整个表,可以同时读,写不行 行级:引擎 INNODB , 单独的一行记录加锁 表级,直接锁定整张表,在你锁定期间,其它进程无法对该表进行写 ...

  8. mysql 数据库查看锁表_【数据库】MySQL查看是否锁表

    可直接在mysql命令行执行:show engine innodb status\G; 查看造成死锁的sql语句,分析索引情况,然后优化sql然后show processlist; 推荐课程:MySQ ...

  9. mysql 并发避免锁表_Yii+MYSQL锁表防止并发情况下重复数据的方法

    本文实例讲述了Yii+MYSQL锁表防止并发情况下重复数据的方法.分享给大家供大家参考,具体如下: lock table 读锁定 如果一个线程获得在一个表上的read锁,那么该线程和所有其他线程只能从 ...

最新文章

  1. java创建二叉树并递归遍历二叉树
  2. 他们和机器人啪啪啪,并计划共度一生
  3. spring JdbcTemplate数据库查询实例
  4. JavaScript-分支和循环
  5. 在VS2012中实现Ext JS的智能提示
  6. Oracle 存储过程调用语句
  7. IOS高级开发之多线程(五)NSOperation 2
  8. 在mac os中设置环境变量
  9. eclipse代码量统计插件_推荐一波代码量、行数、提交量、作者等全维度统计神器...
  10. JAVA各类基础高级面试题和中间件面试题资料
  11. epson l201 l200清零软件 中文版 l111 l101清零软件 L350 L353 清零软件
  12. win7升级旗舰版密钥_WIN7无人值守应答文件的制作
  13. 以下数值中 不能用作C语言标识符,C语言题库及答案(选择题)
  14. vue在线预览excel
  15. 世界名模刘金金称赞续元金方是国宝,表示:振兴国医,义不容辞
  16. 不入门级代码教程(仅供参考)
  17. Python轻松搞定免费语音合成,利用百度AI为短视频配音
  18. Windows Embedded Standard 7 SP1 Runtime 下载
  19. matlab2015和2016关于fplot的一个区别
  20. 计算机视觉:卷积步长(Stride)

热门文章

  1. leetcode -- 303. 区域和检索 - 数组不可变
  2. 【讲解】1030 Travel Plan (30 分)【DFS】_41行代码Ac
  3. L1-010 比较大小(8行代码AC!!!)
  4. idea2020shezhi代码检查级别_ICT技术:阿里巴巴代码缺陷检测探索与实践
  5. android图片选择器框架支持长图,基于RxJava的Android图片选择器. – RxPicker
  6. java条件运算符类型转换_Java运算符,条件表达式,类型转换
  7. Linux系统的iptables防火墙、SNAT、DNAT原理与设置规则
  8. matlab中向量norm,【Matlab开发】matlab中norm范数以及向量点积、绘图设置相关
  9. Mysql数据库(三)——mysql数据库高级操作
  10. CiscoOSPF的选路原理