Mysql事务中Update是否会锁表?
作者:Young丶 发布时间:2024-01-14 19:11:33
标签:事务,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会锁表,如果加了索引,就会锁行
来源:https://blog.csdn.net/agonie201218/article/details/109022700


猜你喜欢
- '定义变量 Dim cn,rs,Sql Sql = "sel
- 由于画图时plt.title()默认是显示英文,如果我们设置标题为中文,会无法显示,如图:在最前边设置这两条属性即可:plt.rcParam
- python中有指定的代码进行输入操作,所以今天就由小编来为大家介绍python怎么实现键盘输入。第一首先打开电脑的python编辑工具。再
- 在实现算法的时候,通常会从两方面考虑算法的复杂度,即时间复杂度和空间复杂度。顾名思义,时间复杂度用于度量算法的计算工作量,空间复杂度用于度量
- MaxDB是MySQL AB公司通过SAP认证的数据库。MaxDB数据库服务器补充了MySQL AB产品系列。某些MaxDB特性在MySQL
- virtualenvwrapper是用来管理virtualenv的扩展包,用着很方便。1. 安装:#安装virtualenvwrapper$
- 前言最近在学习python,发现一个微信自动发消息的小demo感觉很有意思,试了一下,不成功,因为demo中用的是itchat这个库来操作微
- 阅读上一篇:[译]Javascript风格要素(一) 我们使用习惯用法可以使我们的意图更加的清晰和简洁。使用==时,当心强制转换考虑下面函数
- MySQL8.0.22安装及配置(超详细),供大家参考,具体内容如下大家好,今天我们来学习一下 MySQL8.0.22安装及配置,好好看,好
- 大多数程序都旨在解决最终用户的问题,为此,需要从用户那里获取一些信息。函数input()让程序暂停运行,等待用户输入一些文本。例如:name
- map( )函数在算法题目里面经常出现,map( )会根据提供的函数对指定序列做映射,在写返回值等需要转换的时候比较常用。关于映射map,可
- 在pycharm使用过程中,对于每次新建的python文件的时候,关于代码编写者的一些个人信息快捷填写,使用模板的方式比较方便。方法如下:1
- 一、文章前言此文主要通过小程序实现对比人脸相似度,并返回相似度分值,可以基于分值判断是否为同一人。人脸登录、用户认证等场景都可以用到。二、具
- 昨晚看了用svg如何制作富有动态的tooltip,于是今天就心血来潮学着做一下,于是也成功做出来,也明白其中的原理,收获颇多阿!接下来要多去
- 动态规划(Dynamic Programming,DP)是一种常用的算法思想,通常用于解决具有重叠子问题和最优子结构性质的问题。动态规划算法
- 导读:在Java中我们使用try-catch进行异常处理,同样的JavaScript也提供了和异常处理类似的异常处理机制,本节我们将对Jav
- SQL实现表里数据按一定顺序排序后,按某几个字段分组后相邻两行数据实现加减乘除运算。思路:1:先把表数据分组排序后打上序号标签2:根据需求把
- 环境搭建python 安装:建议使用python3.7pycharm安装requests安装 :pip3 install requestsr
- 例如:from multiprocessing import Pooldef f(x):return x*xpool = Pool(proc
- 首先:如果备份的数据库有两个文件,分别是.LDF 和 .MDF,打开企业管理器,在实例上右击---所有任务--附加数据库,然后选择那个.MD