select......for update会锁表还是锁行?

news2025/1/10 18:06:56

select查询语句是不会加锁的,但是select .......for update除了有查询的作用外,还会加锁呢,而且它是悲观锁。

那么它加的是行锁还是表锁,这就要看是不是用了索引/主键。

没用索引/主键的话就是表锁,否则就是是行锁。

一、验证

建表sql

//id为主键  
//name 为唯一索引
CREATE TABLE `user` (
 `id` INT ( 11 ) NOT NULL AUTO_INCREMENT,
 `name` VARCHAR ( 255 ) DEFAULT NULL,
 `age` INT ( 11 ) DEFAULT NULL,
    `code` VARCHAR ( 255 ) DEFAULT NULL,
 PRIMARY KEY ( `id` ),
    KEY `idx_age` ( `age` ) USING BTREE 
) ENGINE = INNODB AUTO_INCREMENT = 1570068 DEFAULT CHARSET = utf8

需要关闭自动提交,通过set @@autocommit=0; 设置为手动提交。0代表手动提交,1代表自动提交。

二、结合一下实例验证

实例1:

使用主键id为条件去查询,然后开启另一个事务去更新数据,更新被阻塞,加锁了,锁定要查询的id为1的行数据。

  • 图一为第一个事务,并且没有提交事务

  • 图二为第二个事务,去更新数据,被阻塞了

  • 图三为第二个事务,长时间拿不到锁报错。

实例2:

我们在开启一个事务对另一条id为2的数据进行更新:

实例3(索引):

一开始的创建表就age创建了唯一索引。

实例4:

使用普通的字段code去操作

 

 另一个事务我去更新另外一条数据,如果我更新成功了,就是锁行,失败了就是锁表。

三、结果

如果查询条件用了索引/主键,那么select ..... for update就会进行行锁。

如果是普通字段(没有索引/主键),那么select ..... for update就会进行锁表。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/25236.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Flutter组件--TabBar使用详情(分段控制器)

TabBar介绍 一个显示水平行选项卡的Widget。 通常创建为 AppBar 的 AppBar.bottom 部分并与 TabBarView 结合使用 在什么情况下使用TabBar 当你的app内容类别比较多的时候,我们常常会用到TabBar,例如网易新闻、京东、B站等,所以TabBar是一…

CentOS7 设置 MySQL 主备同步

文章目录环境准备修改配置文件创建同步数据账户设置主库信息测试参考资料本文主要介绍在 MySQL 的主备同步设置方法。环境准备 Linux:Centos 7 MySQL:5.7 主节点:192.168.210.18 备节点:192.168.210.19 主备节点 MySQL 均支持…

2022 Android 高级进阶学习资料与高频精选面试题精讲(圆梦大厂)

序言 可能每个技术人都有个大厂梦,我也不例外。最近准备跳槽,前一阵子在准备各种面试,也面了几个大厂,其中包括字节、阿里 就以字节面试为例,面试总共花费了 20 天左右,包含了 4 轮电话面试、1 轮笔试、1 轮…

锐捷OSPF基础实验配置

目录 配置基础的邻居建立 配置Area4的虚链路 配置OSPF特殊区域 配置路由重分发 配置OSPF汇总 下发缺省路由 配置OSPF邻居认证 配置OSPF的网络类型 配置基础的邻居建立 以R1和R2建立邻居为例子(其余设备邻居建立配置相同) R1配置 int g0/0 no swi…

安泰测试-矢量网络分析仪有哪些应用?

网络分析仪可用于表征射频(RF)器件。尽管最初只是测量 S 参数,但为了优于被测器件,现在的网络分析仪已经高度集成,并且非常先进。 射频电路需要独特的测试方法。在高频内很难直接测量电压和电流,因此在测量高频器件时&#xff0c…

电话语音控件:AddTapi.NET 6.0 Crack

关于 AddTapi.NET 轻松地将电话 (TAPI) 功能添加到您的 C#、VB.NET 或 C 应用程序。 AddTapi.NET 支持 Microsoft 电话应用程序编程接口 (TAPI) 1.3 - 3.1,并适用于所有与 TAPI 兼容的电话硬件,从语音调制解调器到高级电话板再到与 TAPI 兼容的 PBX 系统…

2.9 Python 流程控制

文章目录1. 流程控制2. 顺序结构3. 伪代码4. 流程图4.1 顺序结构4.2 分支结构4.3 多分支结构4.4 循环结构1. 流程控制 流程控制: 控制程序按照一定的结构进行执行. 流程控制指的是代码的运行逻辑, 分支走向, 循环控制, 能真正体现程序执行顺序的操作.* 1966年计算机科学家 C.B…

pikachu---暴力破解(burpsuite)

没有设置认证策略的情况下,口令猜测就是尝试,永无尽头的尝试 符号的排列组合试到最后,总能得出最终结果,人类大脑和生理的限制,需要使用工具来尝试。 前言 浅学,借鉴,暂无代码分析。 基于表…

中职生学习动机的激发与培养研究-以汽车运用与维修专业为例

目 录 摘 要 I Abstract II 一、绪论 1 (一)选题背景及意义 1 (二)国内外研究现状 1 1.国外发展现状及趋势 1 2.国内发展现状及趋势 3 (三)研究思路及方法 3 二、学习动机的含义及基本类型 5 (一…

python之requests的高级用法

上一篇我们说了requests的简单用法,知道了如何发送请求,今天我们更深层次的来学习requests。我们看看高级一点的操作,比如讲文件上传,cookies设置,代理设置之类的。 1.文件上传 我们知道requests可以模拟提交一些数据…

UE5笔记【七】Nanite虚化几何-虚化几何简介;创建Nanite对象。

简书上有一篇文章:《【UE5】Nanite解析》 Epic外放的两大特性Nanite跟Lumen,构成了UE版本升级的基石,关于这两大技术,已经有了众多的分享,不过这些分享在结构和内容上难以构成整个方案的全貌,因此尝试先通…

Zero Time Waste: Recycling Predictions in Early Exit Neural Networks 论文阅读笔记

这是NIPS2021的一篇论文。论文的主题是解决early exit失败的时候IC的运算被浪费掉的问题。 背景介绍 early exit 是一个提高推理速度的研究方向。主要做法就是在网络的浅层特征上插入一些分支的分类器(Internal Classifier)。当以某个简单样本为输入的时…

SpringBoot项目实现发布订阅模式

文章目录自己实现观察者模式观察者被观察者测试利用Spring精简观察者实现类:定义成Bean被观察者:自动注入BeanSpring Event实现发布/订阅模式自定义事件事件监听者实现ApplicationListener接口使用EventListener注解异步和自定义线程池异步执行自定义线程…

SSM框架-Spring(二)

目录 1 手写spring框架 2 Spring IoC注解式开发 2.1 回顾注解 2.2 声明Bean的注解 2.3 Spring注解的使用 2.4 选择性实例化Bean 2.5 负责注入的注解 2.5.1 Value 2.5.2 Autowired与Qualifier 2.5.3 Resource 2.6 全注解式开发 3 JdbcTemplate 3.1 环境准备 3.2 新…

深化服务成工业品电商角逐新焦点

配图来自Canva可画 随着产业互联网的持续深入,TO B赛道就变得愈发火热起来,除了时下比较兴盛的各类SaaS应用之外,工业品电商赛道也再次汇集了外界的众多关注。据日前发布的《中国工业品数字化发展白皮书2022》显示,2022年上半年工…

应急响应-日志分析

Windows日志分析 日志概述在Windows系统中,日志文件包括:系统日志、安全性日志、应用程序日志: 在Windows Vista/windwos 7/windows 8/windows 10/windows server 2008及以上版本中: 系统日志的存放位置:%SystemRoot%\System32\…

【多线程 (一)】实现多线程的三种方式、线程休眠、线程优先级、守护线程

文章目录多线程1.1简单了解多线程1.2并发和并行1.3进程和线程1.4实现多线程方式一:继承 Thread类1.5实现多线程的方式二:实现 Runnable接口1.6实现多线程方式三:实现Callable接口1.7三种实现方式的对比1.8设置和获取线程名称1.9线程休眠1.10线…

电商网站运营的 7 大关键指标

本文介绍电商网站用户运营转化的相关指标体系,通过对这些指标的统计、监测和分析,可以及时发现电商运营的问题,以便有效及时改进和优化,提升电商转化率和销售额。 其中,不同类别指标对应电商运营的不同环节&#xff0…

02 使用jenkins实现K8s持续集成

1.项目架构的代码仓库使用gitlab托管 架构描述我不打算用过多文字描述了,来我们一起直接看图吧....二.将测试代码上传到gitlab 1.注册gitlab账户 此处使用本地搭建仓库2.创建仓库名称为"idiaoyan" 如下图所示,安装图解方式创建相应的用户即…

基于Multisim的LC正弦波振荡器的设计与仿真

目 录 1、绪论 1 1.1选题背景及意义 1 1.2国内外研究现状 1 1.3研究主要内容 2 2、系统整体设计 3 2.1开发环境Multisim的介绍 3 2.2方案比较与论证 4 2.2.1振荡电路方案选择 4 2.2.2 控制电路设计方案 4 2.3系统整体设计 5 3、工作原理、硬件电路的设计和参数的计算 6 3.1 反馈…