两种情况:

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 join 锁表_Mysql事务中Update是否会锁表?相关推荐

  1. mysql outer join的用法_MySQL 8 中的连接语法JOIN、OUTER JOIN的相关用法

    JOIN连接为内连接(INNER JOIN),如果A表与B表进行JOIN连接,都是查询这两个表的交集,所谓交集就是这条记录既在A表中存在也在B表中存在:mysql> SELECT a.id, a ...

  2. Mysql 事务中Update 会锁表吗?

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

  3. MySQL数据库事务中的行级锁,表级锁,页级锁

    锁定用于确保事务完整性和数据库一致性. 锁定可以防止用户读取其他用户正在更改的数据,并防止多个用户同时更改相同的数据. 如果不使用锁定,数据库中的数据可能在逻辑上变得不正确,而针对这些数据进行查询可能 ...

  4. mysql不可重复读是锁的表吗_Mysql事务,并发问题,锁机制-- 幻读、不可重复读(转)...

    1.什么是事务 事务是一条或多条数据库操作语句的组合,具备ACID,4个特点. 原子性:要不全部成功,要不全部撤销 隔离性:事务之间相互独立,互不干扰 一致性:数据库正确地改变状态后,数据库的一致性约 ...

  5. mysql 并发_Mysql事务,并发问题,锁机制

    1.什么是事务 事务是一条或多条数据库操作语句的组合,具备ACID,4个特点. 原子性:要不全部成功,要不全部撤销 隔离性:事务之间相互独立,互不干扰 一致性:数据库正确地改变状态后,数据库的一致性约 ...

  6. mysql行级锁作用_Mysql事务及行级锁的理解

    在最近的开发中,碰到一个需求签到,每个用户每天只能签到一次,那么怎么去判断某个用户当天是否签到呢?因为当属表设计的时候,每个用户签到一次,即向表中插入一条记录,根据记录的数量和时间来判断用户当天是否签 ...

  7. mysql outer join的用法_MySQL中join的用法

    JOIN的含义就如英文单词"join"一样,连接两张表,大致分为内连接,外连接,右连接,左连接,自然连接.这里描述先甩出一张用烂了的图,然后插入测试数据. 笛卡尔积:CROSS J ...

  8. mysql inner join多条件_Mysql中Left Join Right Join Inner Join where条件的比较

    建立一对多的表 company 和 employee company表 id      name      address 1baidu北京 2huawei深圳 3jingdong北京 4tengxu ...

  9. delete 会不会锁表_MySQL的insert into select 引发锁表

    上周五HaC我要上线,有一个脚本需要执行,执行前需要备份一个表. 运维大佬:"这个表的备份为什么要这么久,,??" 1秒过去了--2秒过去了-- 期间运营反馈系统出现大量订单超时情 ...

最新文章

  1. 【只需三步】用IDEA打开一个新的jsp项目如何跑起来(运行起来)
  2. 易语言操作mysql数据库
  3. 【Linux】一步一步学Linux——declare命令(217)
  4. python中关键字global的简单理解
  5. AUTOSAR从入门到精通100讲(四十一)-基于AUTOSAR与Matlab开发应用层三部曲-应用层总体功能开发和集成
  6. Apache2 部署flask项目
  7. Android 编程下 Touch 事件的分发和消费机制
  8. 【华为云技术分享】测试微课堂 | 有的放矢制定测试计划
  9. idea快捷键 java
  10. 最全最简单的dubbo教程-开篇《一》
  11. 【软件测试】软件测试的环境部署和安装教程[全]
  12. php生成流水号,生成唯一流水号
  13. 我对“心即理,致良知,知行合一”和《王阳明四句教》的的理解。
  14. 哇塞,可以用Python实现电脑自动写小说了!!!
  15. 计算机课word实验总结,大学计算机操作实践报告【实验8】Word2010综合实验
  16. 信息系统项目管理师学习笔记3—项目立项管理
  17. 使用 MATLAB Coder App生成MEX函数
  18. [附源码]SSM计算机毕业设计政府公用车辆管理系统JAVA
  19. JS 函数的递归算法
  20. Flutter开发之——Card

热门文章

  1. python精进之路 -- open函数
  2. Linux中netfilter模块编程实践
  3. IDC:全球大数据和业务分析收入预计到2019年突破1870亿美元
  4. 软件工程综合实践阶段小结(2)
  5. cocos2d-x JS 开启远程代码调试
  6. nginx error_log 错误日志配置说明
  7. springMVC中Dispatcher中的/和/*的区别
  8. apache solr rce cve-2019-0192 分析
  9. linux shell 执行 几种方式区别 bash source .
  10. 数字货币 BCH 使用SLP创建转移token (Electron-Cash 3.4.5安装使用 )