我的编程空间,编程开发者的网络收藏夹
学习永远不晚

通过实例判断mysql update是否会锁表

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

通过实例判断mysql update是否会锁表

两种情况:

带索引 2.不带索引

前提介绍:

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

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

命令:select @@autocommit;

结果如下:

+————?+
| @@autocommit |
+————?+
| 0 |
+————?+

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

当前的数据库表格式如下

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会锁表,如果加了索引,就会锁行

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自学编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

通过实例判断mysql update是否会锁表

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

通过实例判断mysql update是否会锁表

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

Mysql事务中Update是否会锁表?

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

MySQL UPDATE语句是否会导致表被锁定?

MySQL UPDATE语句是否会导致表被锁定?MySQL 是一个流行的关系型数据库管理系统,广泛用于各种应用程序中。在数据库操作中,UPDATE 语句用于更新表中的数据。但是,一个常见的问题是,当执行 UPDATE 语句时,会不会导致整
MySQL UPDATE语句是否会导致表被锁定?
2024-03-15

MySQL的UPDATE操作是否会造成表级锁定?

MySQL的UPDATE操作是否会造成表级锁定?在MySQL数据库中,当执行UPDATE操作时,是否会造成表级锁定,这是一个常见而又重要的问题。表级锁定会影响数据库的并发性能,因此了解UPDATE操作是否会引起表级锁定对于优化数据库的性能
MySQL的UPDATE操作是否会造成表级锁定?
2024-03-15

Oracle存储过程:判断表是否存在的实现方法

Oracle数据库中存储过程是一种特定类型的存储过程,用于在数据库中执行一系列的SQL语句和数据操作。在实际的数据库开发工作中,有时候我们需要判断某个表是否存在于数据库中,这样可以在存储过程中做一些判断和逻辑处理。下面我们将介绍如何在Ora
Oracle存储过程:判断表是否存在的实现方法
2024-03-08

实例验证MySQL|update字段为相同的值是否会记录binlog

一 前言 前几天一个开发同事咨询我,update 更新字段为相同的值是否会记录binlog,我回复说不会。 其实 严格的说这个答案是不准确的,说要区分场景。是否记录 update 语句到binlog依赖于 binlog_format 的设置
2022-05-18

编程热搜

目录