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

    文章

    7315

    浏览量

    93997
  • select
    +关注

    关注

    0

    文章

    28

    浏览量

    4212

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

    请问这个芯片是被了吗?

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

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

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

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

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

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

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

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

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

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

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

    电路工作原理 自电路与常开电路的区别

    一、自电路工作原理 自电路是电路中的一种特殊设计,一旦按下开关,电路就能自动保持持续通电状态,直到按下其他开关使之断路为止。这种特性使得自电路在需要长时间保持电路接通的场景中得到了广泛应用
    的头像 发表于 01-31 10:07 5475次阅读

    电路在智能家居中的运用

    一、自电路的基本原理 自电路,又称为自保持电路,是一种能够在电路中形成正反馈的电路结构。当电路中的某个条件满足时,电路能够自动保持当前状态,无需外部持续的控制信号。这种电路通常由一个触发器(如
    的头像 发表于 01-18 10:17 1338次阅读

    电路与非自电路的比较

    在电气控制系统中,电路的设计对于系统的稳定性和可靠性至关重要。自电路和非自电路是两种基本的控制电路类型,它们在功能和应用上有着明显的区别。 自电路 定义 自电路是一种在电路中加
    的头像 发表于 01-18 10:11 1516次阅读

    电路模组选择指南

    1. 自电路模组的基本原理 自电路模组的核心是一个继电器,它包含一个控制线圈和一个或多个触点。当控制线圈通电时,继电器的触点闭合,即使控制线圈断电,触点也保持闭合状态,这就是所
    的头像 发表于 01-18 10:08 1196次阅读

    电路常见故障及解决方法

    继电器、按钮、限位开关等组成。当电路中的某个条件被满足时,继电器的常闭触点断开,而常开触点闭合,从而保持电路的状态,即使初始条件不再满足。 常见故障 1. 电路无法自 故障原因 继电器损坏或触点粘连。 按钮或限位开关
    的头像 发表于 01-18 10:05 3475次阅读

    电路的类型和特点

    在电子工程领域,自电路是一种常见的设计,它能够使电路在没有持续的触发信号的情况下保持其状态。这种电路的设计对于实现自动化控制和减少人为干预至关重要。 一、自电路的类型 自电路可以根据其工作原理
    的头像 发表于 01-18 10:03 1644次阅读

    电路如何设计

    电路的设计旨在实现电路在按下开关后能自动保持持续通电,直到按下其他开关使之断路为止的功能。以下是自电路设计的基本步骤和要点: 一、基本设计步骤 接入电源 : 将零线接入电路的指定端子(如十一号
    的头像 发表于 01-18 09:56 2844次阅读

    电路的应用实例

    见的应用之一。在这种系统中,当用户通过输入密码、刷卡或生物识别等方式验证身份后,电路触发门锁打开。一旦门被打开,自电路保持门锁的开启状态,直到门被关闭或系统被重置。这种设计不仅提高了安全性,还减少了对持续电源的
    的头像 发表于 01-18 09:53 2118次阅读