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

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

3天内不再提示

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

jf_ro2CN3Fa 来源:油锅里的猪 作者:油锅里的猪 2022-10-10 15:54 次阅读

验证

结合一下实例验证

结果

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代表自动提交。

a25c28ce-3734-11ed-ba43-dac502259ad0.png

结合一下实例验证

实例1:

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

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

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

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

a26a62a4-3734-11ed-ba43-dac502259ad0.pnga27d446e-3734-11ed-ba43-dac502259ad0.pnga28c0e68-3734-11ed-ba43-dac502259ad0.png

实例2:

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

a2a3bb8a-3734-11ed-ba43-dac502259ad0.pnga2b864ae-3734-11ed-ba43-dac502259ad0.png

实例3(索引):

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

a2cb457e-3734-11ed-ba43-dac502259ad0.pnga2e2d342-3734-11ed-ba43-dac502259ad0.pnga306f9fc-3734-11ed-ba43-dac502259ad0.png

实例4:

使用普通的字段code去操作

a31543a4-3734-11ed-ba43-dac502259ad0.pnga32f5eb0-3734-11ed-ba43-dac502259ad0.pnga33cf674-3734-11ed-ba43-dac502259ad0.png

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

a3517036-3734-11ed-ba43-dac502259ad0.pnga364ff20-3734-11ed-ba43-dac502259ad0.png

结果:

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

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

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

    关注

    30

    文章

    4779

    浏览量

    68525
  • select
    +关注

    关注

    0

    文章

    28

    浏览量

    3912

原文标题:面试官问:select......for update会锁表还是锁行?

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

收藏 人收藏

    评论

    相关推荐

    存器的基本输出时序

    在深入探讨存器的输出时序时,我们需要详细分析存器在不同控制信号下的行为表现,特别是控制信号(如使能信号E)的电平变化如何影响数据输入(D)到输出(Q)的传输过程。以下是对存器输出时序的详细描述,旨在全面覆盖其工作原理和时序
    的头像 发表于 08-30 10:43 549次阅读

    时序逻辑产生存器吗

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

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

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

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

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

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

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

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

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

    存器原态和新态的定义

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

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

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

    互斥和自旋的实现原理

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

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

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

    鸿蒙开发系统基础能力:ohos.screenLock 屏管理

    屏管理服务是OpenHarmony中系统服务,为屏应用提供注册亮屏、灭屏、开启屏幕、结束休眠、退出动画、请求解锁结果监听,并提供回调结果给屏应用。屏管理服务向三方应用提供请求解
    的头像 发表于 06-27 11:41 695次阅读
    鸿蒙开发系统基础能力:ohos.screenLock <b class='flag-5'>锁</b>屏管理

    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>

    华为pockets屏幕怎么设置

    华为pockets屏幕怎么设置
    的头像 发表于 03-06 16:15 1406次阅读

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

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