Mysql 事务中Update 会锁表吗?

两种情况:

1.带索引 2.不带索引

前提介绍:

方式:采用命令行的方式来模拟

1.mysq由于默认是开启自动提交事务,所以首先得查看自己当前的数据库是否开启了自动提交事务。

命令:select @@autocommit;

结果如下:


+--------------+
| @@autocommit |
+--------------+
|      0 |
+--------------+

如果是1,那么运行命令:set autocommit = 0;设置为不开启自动提交

2.当前的数据库表格式如下


tb_user | CREATE TABLE `tb_user` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`name` varchar(32) DEFAULT NULL,`phone` varchar(11) DEFAULT NULL,`operator` varchar(32) DEFAULT NULL,`gmt_create` datetime DEFAULT NULL,`gmt_modified` datetime DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8

显然除了主键,我没有加任何索引

实际例子:

1.没有索引

运行命令:begin;开启事务,然后运行命令:update tb_user set phone=11 where name="c1";修改,先别commit事务。

再开一个窗口,直接运行命令:update tb_user set phone=22 where name=“c2”;会发现命令卡住了,但是当前面一个事务通过commit提交了,命令就会正常运行结束,说明是被锁表了。

2.给name字段加索引

create index index_name on tb_user(name);

然后继续如1里面的操作,也就是一个开启事务,运行update tb_user set phone=11 where name="c1";先不提交

然后另一个运行update tb_user set phone=22 where name="c2";发现命令不会卡住,说明没有锁表

但是如果另一个也是update tb_user set phone=22 where name="c1";更新同一行,说明是锁行了

3.总结

如果没有索引,所以update会锁表,如果加了索引,就会锁行

Mysql 事务中Update 会锁表吗?相关推荐

  1. mysql update join 锁表_Mysql事务中Update是否会锁表?

    两种情况: 1.带索引 2.不带索引 前提介绍: 方式:采用命令行的方式来模拟 1.mysq由于默认是开启自动提交事务,所以首先得查看自己当前的数据库是否开启了自动提交事务. 命令:select @@ ...

  2. MySQL死锁问题如何分析锁表后查看死锁和去除死锁快速解决方法

    (1) 遇到锁表快速解决办法 依次执行1-6步,运行第6步生成的语句即可. 如果特别着急,运行 1 2 6 步 以及第6步生成的kill语句 即可. 1.  第1步 查看表是否在使用. show op ...

  3. MySQL事务隔离与行锁的关系

    MySQL事务隔离与行锁的关系 1. MySQL事务隔离 2. MySQL行锁 3. 事务隔离问题 1. MySQL事务隔离 MySQL事务详解 MySQL事务详解中介绍了事务隔离相关概念原理,如果是 ...

  4. Mysql数据库中的各种锁

    目录 概述 MyIsam 如何加表锁 并发锁 MyISAM的锁调度 InnoDB 事务(Transaction)及其ACID属性 并发事务带来的问题 InnoDB都有哪些锁? InnoDB的行锁模式及 ...

  5. mysql查询更新时的锁表机制分析

    为了给高并发情况下的mysql进行更好的优化,有必要了解一下mysql查询更新时的锁表机制. 一.概述 MySQL有三种锁的级别:页级.表级.行级. MyISAM和MEMORY存储引擎采用的是表级锁( ...

  6. 通过JSP网页连接MySQL数据库,从MySQL数据库中读出一张表并显示在JSP网页中

    1.安装所需软件 ①安装java和tomcat,建立JSP网页最基础的软件 ②安装MySQL数据库(下载地址:https://www.mysql.com/) ③安装Navicat Premium来查看 ...

  7. mysql数据库中,查询一个表的下一条数据减上一条数据的值的写法

    mysql数据库中,查询一个表的下一条数据减上一条数据的值的写法: select a.nodeId,a.cpuCharge-b.cpuCharge cpuCharge, a.chargeTime fr ...

  8. mysql 事务 for update,mysql事务锁_详解mysql 锁表 for update

    摘要 腾兴网为您分享:详解mysql 锁表 for update,智慧农业,真还赚,悦读小说,学习帮等软件知识,以及电池管家,三国群英传3,userland,运满满货主版,王者荣耀,简单3d动画,嘉丽 ...

  9. MySQL/InnoDB中,乐观锁、悲观锁、共享锁、排它锁、行锁、表锁、死锁概念的理解

    MySQL/InnoDB的加锁,一直是一个面试中常问的话题.例如,数据库如果有高并发请求,如何保证数据完整性?产生死锁问题如何排查并解决?我在工作过程中,也会经常用到,乐观锁,排它锁,等.于是今天就对 ...

最新文章

  1. centos修改ip mac等
  2. springboot动态加载native类库
  3. 【完结】史上最萌最认真的机器学习/深度学习/模式识别入门指导手册(四)
  4. Progress Control控件的使用
  5. 使用Flexible实现H5页面的终端适配
  6. android 程序 架构,Android应用架构
  7. 科罗拉多州立大学计算机科学专业,2020年科罗拉多州立大学有哪些优势专业
  8. [20150803]触发器对dml的影响.txt
  9. [WebApi] 捣鼓一个资源管理器--文件下载
  10. tomcat:日志配置详解(避免日志过多撑爆磁盘)
  11. pycharm “collecting data“
  12. Yocto on Quark X1000
  13. 2011年分形艺术国际大赛比赛规则
  14. 基于微信小程序的资产管理平台的设计与实现
  15. 源码 源代码下载 - www.pudn.com 程序员联合开发网
  16. GoogleEarth-- 一日坐看天下八千里
  17. 电容实际等效模型(容抗、感抗、品质因数Q)
  18. 王道操作系统课代表 - 考研计算机 第一章 计算机概述 究极精华总结笔记
  19. 为什么 1KB 等于 1024 B
  20. HIVE基本查询操作(二)——第1关:Hive排序

热门文章

  1. R语言ggplot2可视化:使用长表数据(窄表数据)( Long Data Format)可视化多个时间序列数据、在同一个可视化图像中可视化多个时间序列数据(Multiple Time Series)
  2. R语言pacman包管理R编程语言需要的包实战:使用p_load函数安装和加载多个R包、使用p_unload函数卸载多个R包、使用p_update函数更新过期的R包
  3. R语言使用str_split函数和str_split_fixed函数将字符串分割(分裂、split)成几个部分:str_split函数使用指定的字符或者字符串分割字符串、str_split_fixed
  4. R构建鲁棒回归模型(Robust Regression)
  5. matplotlib绘制带比例(percentile)的堆叠(stacked)条形图(bar plot)
  6. 测试开发工程师技能图谱
  7. perl编程(基本语法 数据 类型)
  8. python的numpy matlib
  9. 用计算机弹奏lemon乐谱,原神乐谱lemon怎么弹 lemon乐谱弹奏方法教学
  10. HTML里面设置文本倒影,文字倒影怎么做