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

    文章

    7035

    浏览量

    89047
  • select
    +关注

    关注

    0

    文章

    28

    浏览量

    3922

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

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

收藏 人收藏

    评论

    相关推荐

    程序员去面试只需一个技能征服所有面试官

    个车辆工程专业的研究生去面试面试官最后问他会不会嵌入式。虽然应聘的岗位不是嵌入式工程师,但看来老板还是希望他能懂点这方面的知识。这个小插曲就说明了一个重要的就业
    的头像 发表于 11-05 19:35 202次阅读
    程序员去<b class='flag-5'>面试</b>只需一个技能征服所有<b class='flag-5'>面试官</b>!

    时序逻辑产生存器吗

    时序逻辑电路本身并不直接“产生”存器,但存器是时序逻辑电路中的重要组成部分。时序逻辑电路(Sequential Logic Circuits)与组合逻辑电路(Combinational
    的头像 发表于 08-28 11:03 408次阅读

    rs存器不定状态的含义是什么

    方面来理解: 一、输入条件 RS存器有两个主要的输入端:S(Set,置位端)和R(Reset,复位端)。根据存器的设计,当S和R同时为高电平时(在某些设计中为低电平,具体取决于门电路的类型和逻辑约定),存器
    的头像 发表于 08-28 10:42 770次阅读

    SR存器的特性、工作原理及应用

    常常见,尤其是在寄存器、计数器和其他存储设备中。在这篇文章中,我们将详细讨论SR存器的特性、工作原理、应用和优缺点。 SR存器特性 SR
    的头像 发表于 08-28 09:27 3238次阅读

    d存器解决了sr存器的什么问题

    D存器(Data Latch)和SR存器(Set-Reset Latch)是数字电路中常见的两种存储元件。它们在数字系统中扮演着重要的角色,用于存储和传递信息。然而,这两种存器在设计和应用上
    的头像 发表于 08-28 09:16 578次阅读

    rs存器和sr存器有什么区别吗

    RS存器和SR存器是数字电路中两种常见的存储单元,它们在功能和应用上有一些区别。 RS存器 RS存器,即Reset-Set存器,是
    的头像 发表于 07-23 14:15 1181次阅读

    存器原态和新态的定义

    。 一、存器的基本概念 1.1 存器的定义 存器是一种具有两个稳定状态的存储元件,可以在没有时钟信号的情况下保持其存储的信息。存器的两个稳定状态分别称为原态和新态。当输入信号发
    的头像 发表于 07-23 10:21 537次阅读

    智能赛道内卷加剧,磐金王42年来稳致远,底气何在?

    %;推总销额规模为28.1亿元,同比增长25.7%。随着智能市场规模逐年递增,产品快速迭代,智能行业已成为众多企业竞相角逐的赛道。智能的生产技术门槛日益提升
    的头像 发表于 07-17 17:10 352次阅读
    智能<b class='flag-5'>锁</b>赛道内卷加剧,磐金<b class='flag-5'>锁</b>王42年来<b class='flag-5'>行</b>稳致远,底气何在?

    面试嵌入式工作,会被问什么问题?

    面试嵌入式工作时,面试官可能从多个方面考察应聘者的知识、技能和经验。以下是一些常见的嵌入式工作面试问题,这些问题涵盖了基础知识、专业技能、项目经验和个人能力等方面
    的头像 发表于 07-17 09:26 2024次阅读
    <b class='flag-5'>面试</b>嵌入式工作,会被问什么问题?

    互斥和自旋的实现原理

    互斥和自旋是操作系统中常用的同步机制,用于控制对共享资源的访问,以避免多个线程或进程同时访问同一资源,从而引发数据不一致或竞争条件等问题。 互斥(Mutex) 互斥是一种基本的
    的头像 发表于 07-10 10:07 495次阅读

    自旋和互斥的使用场景是什么

    制,它在等待的过程中,线程不断地检查的状态,直到被释放。自旋适用于以下场景: 1.1
    的头像 发表于 07-10 10:05 1010次阅读

    8位可寻址存器数据

    电子发烧友网站提供《8位可寻址存器数据.pdf》资料免费下载
    发表于 05-23 10:15 0次下载
    8位可寻址<b class='flag-5'>锁</b>存器数据<b class='flag-5'>表</b>

    8位可寻址存器数据

    电子发烧友网站提供《8位可寻址存器数据.pdf》资料免费下载
    发表于 05-17 10:57 0次下载
    8位可寻址<b class='flag-5'>锁</b>存器数据<b class='flag-5'>表</b>

    面试官:Kafka丢消息吗?

    许多开发人员普遍认为,Kafka 的设计本身就能保证不会丢失消息。然而,Kafka 架构和配置的细微差别导致消息的丢失。我们需要了解它如何以及何时可能丢失消息,并防止此类情况的发生。
    的头像 发表于 04-29 17:32 1028次阅读
    <b class='flag-5'>面试官</b>:Kafka<b class='flag-5'>会</b>丢消息吗?

    U-tec宣布推出首款带指纹读取器的闩智能

    智能制造商U-tec宣布推出首款带指纹读取器的闩智能,支持Matter-over-Thread。
    的头像 发表于 01-12 16:17 1011次阅读