select……for update 到底加的什么锁

先上结论

主键索引唯一索引普通索引普通字段
等值查询行锁行锁行锁间隙锁,锁表
范围查询间隙锁,锁范围行间隙锁,锁范围行间隙锁,锁范围行间隙锁,锁表

数据表准备

DROP TABLE IF EXISTS `t_user_test`;
CREATE TABLE `t_user_test`  (`id` int NOT NULL,`user_id` int NULL DEFAULT NULL,`user_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,`city` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE,UNIQUE INDEX `idx_uid`(`user_id`) USING BTREE COMMENT '用户ID唯一索引',INDEX `idx_uname`(`user_name`) USING BTREE COMMENT '用户姓名普通索引'
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;insert into t_user_test VALUES(1,1001,'张三','深圳'),
(2,1005,'李四','惠州'),
(3,1009,'王五','佛山'),
(4,1020,'赵六','珠海');

id :主键

user_id : 唯一索引

user_name: 普通索引

city: 无索引,普通字段

Session1  Session2 关闭自动提交

主键等值查询 命中

 

等值查询,主键ID命中,锁住行

主键等值查询 不命中

等值查询,主键ID不命中,没有行锁产生 

唯一索引等值查询 命中

 

 等值查询,唯一索引命中,锁住行

唯一索引等值查询 不命中

等值查询,唯一索引不命中,没有行锁产生 

普通索引等值查询 命中

 

等值查询 普通索引命中,锁住行 

普通索引等值查询  不命中

 

 等值查询,普通索引不命中,没有行锁产生 

非索引字段,等值查询命中

 等值查询,非索引字段命中,产生表锁

5个 LOCK_MODE 为 X,说明是 X 型的 next-key 锁;相当于锁住了整个表

非索引字段,等值查询 不命中

 

 等值查询,非索引字段不命中,产生表锁

在范围查询之前,先insert一条数据

insert into t_user_test values(8,1002,'秦七','东莞');

主键范围查询 命中

 范围查询,主键字段命中,间隙锁,锁住大于1的记录

 主键范围查询 不命中

  范围查询,主键字段不命中,间隙锁,锁住大于9的记录

  唯一索引范围查询 命中

  范围查询,唯一索引字段命中,间隙锁 同主键ID一致 锁住条件内的

唯一索引范围查询  不命中

  范围查询,唯一索引字段不命中,间隙锁,同主键ID一致 锁住条件内的

普通索引范围查询  命中

 同主键,唯一索引一致 间隙锁

普通索引范围查询  不命中

同主键,唯一索引一致 间隙锁

普通字段范围查询  表锁

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

七牛云下载文件(显示在浏览器上)

最近在做关于如何将七牛云的文件下载下来,且在浏览器页面展示下载文件。 首先,我们需要注册七牛云账号 七牛云官网。 选择个人账户即可,若是需要企业账户,则可以选择企业账户。 注册成功绑定邮箱后,我们可以创建存储…

Linux——统信UOS(v20-1060a)部署.net core项目

部署.net core之前,请先确定已经安装了运行环境 Linux安装.net core环境 新建一个用于测试的 .net core web 项目 直接发布到文件夹,目标运行时选择 linux-64,这里根据你自己的操作系统的运行环境选择。 先点击完成,后面再设置参…

2023年Web安全学习路线总结!430页Web安全学习笔记(附PDF)

关键词:网络安全入门、渗透测试学习、零基础学安全、网络安全学习路线、web安全攻防笔记、渗透测试路线图 网络安全的范畴很大,相较于二进制安全等方向的高门槛、高要求,Web安全体系比较成熟,在现阶段来看,但凡有自己…

【全文搜索选型】全文搜索 PostgreSQL 或 ElasticSearch

在本文中,我记录了在 PostgreSQL(使用 Django ORM)和 ElasticSearch 中实现全文搜索 (FTS) 时的一些发现。 作为一名 Django 开发人员,我开始寻找可用的选项来在大约一百万行的标准大小上执行全文搜索。有两个值得尝试的选项&…

怎样优雅地增删查改(一):从0开始搭建Volo.Abp项目

软件系统中数据库或者持久层的基本操作功能可以用Curd描述,Curd即 增加(Create)、更新(Update)、读取查询(Retrieve)和删除(Delete), 这4个单词的首字母。 在…

【HTTP 协议2】如何构造 HTTP 请求

文章目录 前言一、地址栏输入二、HTML 特殊标签三、form 表单四、ajax总结 前言 各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你: 📕 JavaSE基础: 基础语法, 类和对象, 封装继承多态, 接口, 综合小练习图书管理系统等 📗 Java数据结…

MFC多文档绘制不同图形

VC6新建一个多文档项目;根据窗口标题的最后数字,绘制不同图形; void CPrdView::OnDraw(CDC* pDC) {CPrdDoc* pDoc GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for native data hereCString str1 pDoc->GetTitle();CPoin…

JumpServer开源堡垒机页面配置

JumpServer开源堡垒机页面配置 一、登录二、功能模块2.1、控制台2.1.1、用户管理2.1.1.1、用户列表2.1.1.2、用户组 2.1.2、资产管理2.1.2.1、资产列表2.1.2.1.1、创建服务器链接2.1.2.1.2、创建数据库MySQL链接 2.1.2.2、网域列表2.1.2.3、平台列表2.1.2.4、标签列表 2.1.3、账…

Type-c取电方案

如今随着这几年的USB-C PD适配器的普及,消费者手上的PD协议适配器越来越普遍,如何让微软surface 充电器线支持使用PD适配器快充?加入一颗受电端PD协议取电芯片——LDR6328能够完美的兼容市面上的PD适配器,支持不同的电压输出。 1…

打包apk时出现Execution failed for task ‘:app:lintVitalRelease

程序可以正常运行,但是打包apk的时候报Execution failed for task ‘:app:lintVitalRelease导致打包失败,原因是执行lintVitalRelease失败了,存在错误。解决办法:在app模块的build.gradle的Android里面添加如下代码: l…

剑指offer刷题笔记--Num31-40

1--栈的压入、弹出序列(31) 直观思路:用两个指针 i 和 j 指向压入和弹出的 vector,终止条件是:所有元素都压入了辅助栈(i > len),且辅助栈当前的栈顶元素与弹出的元素 popped[j] …

跨境干货|Etsy安全入驻开店攻略

2023了,跨境电商现在上车还来得及吗?当然!Etsy是一个低成本低竞争高回报的平台,相较于其他电商平台,他的佣金非常低,利润率更高,非常合适跨境小白入局。 但由于目前Etsy关闭了中国大陆卖家的注…