0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

面试官:select......for update会锁表还是锁行?

jf_ro2CN3Fa 来源:芋道源码 作者:芋道源码 2022-11-29 10:26 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群


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

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

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

验证:

建表sql

//id为主键
//name为唯一索引
CREATETABLE`user`(
`id`INT(11)NOTNULLAUTO_INCREMENT,
`name`VARCHAR(255)DEFAULTNULL,
`age`INT(11)DEFAULTNULL,
`code`VARCHAR(255)DEFAULTNULL,
PRIMARYKEY(`id`),
KEY`idx_age`(`age`)USINGBTREE
)ENGINE=INNODBAUTO_INCREMENT=1570068DEFAULTCHARSET=utf8

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

4cae1c68-6f8b-11ed-8abf-dac502259ad0.png

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro
  • 视频教程:https://doc.iocoder.cn/video/

结合一下实例验证

实例1:

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

  • 图一为第一个事务,并且没有提交事务
  • 图二为第二个事务,去更新数据,被阻塞了
  • 图三为第二个事务,长时间拿不到锁报错。
4ccbddc0-6f8b-11ed-8abf-dac502259ad0.png4ce6d36e-6f8b-11ed-8abf-dac502259ad0.png4d0506ae-6f8b-11ed-8abf-dac502259ad0.png

实例2:

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

4d289718-6f8b-11ed-8abf-dac502259ad0.png4d467c24-6f8b-11ed-8abf-dac502259ad0.png

实例3(索引):

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

4d61c664-6f8b-11ed-8abf-dac502259ad0.png4d75786c-6f8b-11ed-8abf-dac502259ad0.png4d96b70c-6f8b-11ed-8abf-dac502259ad0.png

实例4:

使用普通的字段code去操作

4dac9e3c-6f8b-11ed-8abf-dac502259ad0.png4dcba9bc-6f8b-11ed-8abf-dac502259ad0.png4ddf233e-6f8b-11ed-8abf-dac502259ad0.png

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

4e01fcb0-6f8b-11ed-8abf-dac502259ad0.png4e1acace-6f8b-11ed-8abf-dac502259ad0.png

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/yudao-cloud
  • 视频教程:https://doc.iocoder.cn/video/

结果:

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

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



审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    7347

    浏览量

    95006
  • select
    +关注

    关注

    0

    文章

    28

    浏览量

    4272

原文标题:面试官:select......for update 会锁表还是锁行?我拴 Q 了!!

文章出处:【微信号:芋道源码,微信公众号:芋道源码】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    74HC373:8位D型透明存器的详细解析

    ,适用于多种电子电路设计。 文件下载: 74HC373.pdf 一、概述 74HC373专为2.0V至6.0V的VCC工作电压范围而设计。它配备了存使能(LE)输入和输出使能(OE)输入。当LE为高电平时,输入数据可以进入存器,此时
    的头像 发表于 03-13 14:20 302次阅读

    德施曼2026新品发布引领智能进入AI agent时代,开启情感化服务新范式

    AI技术追求通用效率,而“家”则需要专属的温度。 2026年3月11日,全球智能领导品牌德施曼在上海举办主题为“灵曜未来”的2026年全球新品发布。会上,德施曼正式推出搭载AI智能管家2.0、龙
    的头像 发表于 03-11 19:51 988次阅读
    德施曼2026新品发布<b class='flag-5'>会</b>引领智能<b class='flag-5'>锁</b>进入AI agent时代,开启情感化服务新范式

    面试必看!排队自旋32位变量的域划分与核心作用

    在操作系统面试中,并发同步机制一直是高频考点,而排队自旋作为解决传统自旋“饥饿” 问题的关键技术,其 32 位变量的域划分更是面试官青睐的 “细节题”。不少同学能说出排队自旋
    的头像 发表于 02-09 16:54 915次阅读
    <b class='flag-5'>面试</b>必看!排队自旋<b class='flag-5'>锁</b>32位变量的域划分与核心作用

    面试必看:排队自旋之MCS的实现原理与关键考点

    在并发编程面试中,“” 是绕不开的核心话题,而自旋作为轻量级的代表,其优化方案更是高频考点。
    的头像 发表于 02-09 16:51 841次阅读
    <b class='flag-5'>面试</b>必看:排队自旋<b class='flag-5'>锁</b>之MCS<b class='flag-5'>锁</b>的实现原理与关键考点

    存器中的时间借用概念与静态时序分析

    对于基于存器的设计,静态时序分析应用一个称为时间借用的概念。本篇博文解释了时间借用的概念,若您的设计中包含存器且时序报告中存在时间借用,即可适用此概念。
    的头像 发表于 12-31 15:25 5618次阅读
    <b class='flag-5'>锁</b>存器中的时间借用概念与静态时序分析

    飞凌嵌入式ElfBoard-文件I/O的深入学习之文件

    在没有获取到文件的情况下是无法对文件进行访问的。强制性让内核检查每一个I/O操作验证调用进程是否是该文件的拥有者,否则将无法访问文件。当一个文件被上锁进行写入操作的时候,内核将
    发表于 12-08 16:08

    霍尔元件在电子里是如何应用的?用几颗?

    霍尔元件在电子中主要通过感知磁场变化实现状态检测、自动控制、防撬报警等功能,其应用数量取决于具体设计需求,通常为1-3颗,复杂系统可能更多。以下是对其应用原理和具体数量的详细分析: 霍尔元件在
    的头像 发表于 11-25 15:01 566次阅读

    请问这个芯片是被了吗?

    我使用gd32f303ze芯片,但是烧录不上,使用jlink查看了下地址,按照手册里的FMC可选项字节里查看地址的情况,好像确实是了,但是按里面的流程走完还是没解决问题,有人知道怎么回事吗?
    发表于 11-03 22:09

    五大认证加冕!德施曼以“首创AI智能”重构智能竞争格局

    近日,智能领军品牌德施曼获得尚普咨询及中研世纪两大权威机构颁发的中国“首创AI智能”、“AI智能领导者”、“AI智能全国销量第一”、“AI智能锁好评率第一”、“AI智能
    的头像 发表于 09-20 10:43 988次阅读
    五大认证加冕!德施曼以“首创AI智能<b class='flag-5'>锁</b>”重构智能<b class='flag-5'>锁</b>竞争格局

    五大认证加冕!德施曼以“首创AI智能”重构智能竞争格局

    近日,智能领军品牌德施曼获得尚普咨询及中研世纪两大权威机构颁发的中国“首创AI智能”、“AI智能领导者”、“AI智能全国销量第一”、“AI智能锁好评率第一”、“AI智能
    的头像 发表于 09-20 10:41 1273次阅读

    网nrf24l01的例程demo会出现互斥报错是为什么?

    我在用nrf24L01网下载的例程包,用stm32进行开发,串口助手显示互斥错误,有朋友遇到这个问题吗
    发表于 09-10 06:05

    动环监控系统与智能集成方案

    系统架构与工作原理动环监控系统与智能集成采用三层架构:智能锁具层、动环监控单元(FSU)层和平台管理层。FSU作为核心桥梁,通过DO口或485接口与智能连接,负责指令转发和状态收集。通信与供电
    的头像 发表于 09-05 11:28 785次阅读
    动环监控系统与智能<b class='flag-5'>锁</b>集成方案

    什么是电磁控制板?24路控板的使用步骤概述

    电磁控制板是一种专用于控制电磁工作状态的电子装置,它可以接收指令并对电磁进行通断电操作,从而实现对相关设备的锁定和解锁控制。电磁本身依靠电流产生磁场作用力来吸附或释放
    的头像 发表于 07-14 16:26 930次阅读
    什么是电磁<b class='flag-5'>锁</b>控制板?24路<b class='flag-5'>锁</b>控板的使用步骤概述

    联世界,智启万家,华普微蓝牙智能解决方案

    密码、指纹、刷卡与多模组合等主流门锁形态,支持与手机APP、小程序、智能中控网关等多终端互联,助力客户快速实现智能门锁产品的量产落地。功能亮点手机蓝牙解锁搭载BLE5.0及以上
    的头像 发表于 06-26 15:46 1020次阅读
    <b class='flag-5'>锁</b>联世界,智启万家,华普微蓝牙智能<b class='flag-5'>锁</b>解决方案

    详述24路电磁主板的工作原理和功能

    电磁是一种利用电磁原理设计的电子锁具,它主要由电磁线圈和可移动衔铁构成。当电流通过电磁线圈时,产生磁场,使衔铁被吸附并保持在某个位置,从而实现锁门或固定物体的功能;断电后,磁力消失,衔铁在弹簧或
    的头像 发表于 06-24 15:25 1262次阅读
    详述24路电磁<b class='flag-5'>锁</b>主板的工作原理和功能