Mysql 事务中Update 会锁表吗?
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 会锁表吗?相关推荐
- mysql update join 锁表_Mysql事务中Update是否会锁表?
两种情况: 1.带索引 2.不带索引 前提介绍: 方式:采用命令行的方式来模拟 1.mysq由于默认是开启自动提交事务,所以首先得查看自己当前的数据库是否开启了自动提交事务. 命令:select @@ ...
- MySQL死锁问题如何分析锁表后查看死锁和去除死锁快速解决方法
(1) 遇到锁表快速解决办法 依次执行1-6步,运行第6步生成的语句即可. 如果特别着急,运行 1 2 6 步 以及第6步生成的kill语句 即可. 1. 第1步 查看表是否在使用. show op ...
- MySQL事务隔离与行锁的关系
MySQL事务隔离与行锁的关系 1. MySQL事务隔离 2. MySQL行锁 3. 事务隔离问题 1. MySQL事务隔离 MySQL事务详解 MySQL事务详解中介绍了事务隔离相关概念原理,如果是 ...
- Mysql数据库中的各种锁
目录 概述 MyIsam 如何加表锁 并发锁 MyISAM的锁调度 InnoDB 事务(Transaction)及其ACID属性 并发事务带来的问题 InnoDB都有哪些锁? InnoDB的行锁模式及 ...
- mysql查询更新时的锁表机制分析
为了给高并发情况下的mysql进行更好的优化,有必要了解一下mysql查询更新时的锁表机制. 一.概述 MySQL有三种锁的级别:页级.表级.行级. MyISAM和MEMORY存储引擎采用的是表级锁( ...
- 通过JSP网页连接MySQL数据库,从MySQL数据库中读出一张表并显示在JSP网页中
1.安装所需软件 ①安装java和tomcat,建立JSP网页最基础的软件 ②安装MySQL数据库(下载地址:https://www.mysql.com/) ③安装Navicat Premium来查看 ...
- mysql数据库中,查询一个表的下一条数据减上一条数据的值的写法
mysql数据库中,查询一个表的下一条数据减上一条数据的值的写法: select a.nodeId,a.cpuCharge-b.cpuCharge cpuCharge, a.chargeTime fr ...
- mysql 事务 for update,mysql事务锁_详解mysql 锁表 for update
摘要 腾兴网为您分享:详解mysql 锁表 for update,智慧农业,真还赚,悦读小说,学习帮等软件知识,以及电池管家,三国群英传3,userland,运满满货主版,王者荣耀,简单3d动画,嘉丽 ...
- MySQL/InnoDB中,乐观锁、悲观锁、共享锁、排它锁、行锁、表锁、死锁概念的理解
MySQL/InnoDB的加锁,一直是一个面试中常问的话题.例如,数据库如果有高并发请求,如何保证数据完整性?产生死锁问题如何排查并解决?我在工作过程中,也会经常用到,乐观锁,排它锁,等.于是今天就对 ...
最新文章
- centos修改ip mac等
- springboot动态加载native类库
- 【完结】史上最萌最认真的机器学习/深度学习/模式识别入门指导手册(四)
- Progress Control控件的使用
- 使用Flexible实现H5页面的终端适配
- android 程序 架构,Android应用架构
- 科罗拉多州立大学计算机科学专业,2020年科罗拉多州立大学有哪些优势专业
- [20150803]触发器对dml的影响.txt
- [WebApi] 捣鼓一个资源管理器--文件下载
- tomcat:日志配置详解(避免日志过多撑爆磁盘)
- pycharm “collecting data“
- Yocto on Quark X1000
- 2011年分形艺术国际大赛比赛规则
- 基于微信小程序的资产管理平台的设计与实现
- 源码 源代码下载 - www.pudn.com 程序员联合开发网
- GoogleEarth-- 一日坐看天下八千里
- 电容实际等效模型(容抗、感抗、品质因数Q)
- 王道操作系统课代表 - 考研计算机 第一章 计算机概述 究极精华总结笔记
- 为什么 1KB 等于 1024 B
- HIVE基本查询操作(二)——第1关:Hive排序
热门文章
- R语言ggplot2可视化:使用长表数据(窄表数据)( Long Data Format)可视化多个时间序列数据、在同一个可视化图像中可视化多个时间序列数据(Multiple Time Series)
- R语言pacman包管理R编程语言需要的包实战:使用p_load函数安装和加载多个R包、使用p_unload函数卸载多个R包、使用p_update函数更新过期的R包
- R语言使用str_split函数和str_split_fixed函数将字符串分割(分裂、split)成几个部分:str_split函数使用指定的字符或者字符串分割字符串、str_split_fixed
- R构建鲁棒回归模型(Robust Regression)
- matplotlib绘制带比例(percentile)的堆叠(stacked)条形图(bar plot)
- 测试开发工程师技能图谱
- perl编程(基本语法 数据 类型)
- python的numpy matlib
- 用计算机弹奏lemon乐谱,原神乐谱lemon怎么弹 lemon乐谱弹奏方法教学
- HTML里面设置文本倒影,文字倒影怎么做