MySQL 锁机制 15 连问 · 面试速答版


一、脑图:锁全景(先记结构,再填细节)

锁层级
├─ 表锁
│   ├─ 意向锁  IS / IX
│   └─ 表锁   READ / WRITE
└─ 行锁├─ 记录锁  Record├─ 间隙锁  Gap└─ 临键锁  Next-Key

二、15 问 15 答(面试官一问一答节奏)

#高频问题15 秒答案
1行锁 vs 表锁行锁锁“行”,表锁锁“整表”;InnoDB 默认行锁,MyISAM 只有表锁。
2何时加表锁LOCK TABLES 显式加;② ALTER/TRUNCATE 隐式加;③ UPDATE 无索引退化为全表锁。
3怎么避免表锁① 用 InnoDB;② 条件列建索引;③ 避免全表扫描;④ 分批更新。
4乐观锁用“版本号”或“CAS”替代数据库锁;MySQL 实现:UPDATE t SET val=new, ver=ver+1 WHERE id=? AND ver=?;影响行数=1 即成功,0 则重试。
5意向锁表级“信号灯”,IS 表示要加行级共享锁,IX 表示要加行级排他锁;例:事务 A 先在 user 表加 IX,再在 id=10 行加 X。
6共享锁 S vs 排他锁 XS:读共享,多个事务可同时持有;X:写独占,任何其他锁互斥。
7两阶段加锁扩展阶段只加锁,收缩阶段只放锁;InnoDB RR 默认强 2PL(所有锁事务结束才放)。
8记录锁锁一行索引记录;例:SELECT * FROM t WHERE id=1 FOR UPDATE(唯一索引且命中)。
9间隙锁锁两个索引记录之间的“空隙”,防插入;例:SELECT * FROM t WHERE id=15 FOR UPDATE(id=15 不存在)。
10临键锁记录锁 + 间隙锁,左开右闭;RR 默认加;范围查询:id BETWEEN 10 AND 20 → (10,20]。
11RC 有 GAP/Next-Key?没有,RC 只有记录锁(除非显式 FOR UPDATE 且用到外键或唯一检查)。
12RR 如何防幻读MVCC(快照读)+ 临键锁(当前读)双管齐下。
13何时加临键锁RR 下:① 范围查询;② 非唯一索引等值查询;③ UPDATE/DELETE 无 LIMIT。
14唯一索引 vs 普通索引唯一索引等值命中→记录锁;普通索引等值→临键锁;唯一索引插入需额外 S 锁做唯一检查。
15死锁案例线上转账批量更新账户表,顺序相反 → 交叉死锁;排查:SHOW ENGINE INNODB STATUS;解决:统一按主键升序排序 + 批量单 SQL 更新;监控:Prometheus 死锁告警。

三、3 个口诀(背口诀,不背细节)

  1. 锁种类
    记录锁锁点,间隙锁锁缝,临键锁锁点缝”。

  2. RR 防幻读
    MVCC 看旧照,临键锁堵新插”。

  3. 避免死锁
    顺序加锁、批量合并、索引覆盖”。


四、面试官追问彩蛋

Q:UPDATE t SET c1=1 WHERE c2=2 无索引会怎样?
A:全表扫描 → 每条记录加 X 锁 + 所有间隙加 Gap 锁 → 等价锁全表;解决:给 c2 建联合索引或改为 id IN (SELECT id ...)


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

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

相关文章

【Linux】发展历程

很高兴为您详细介绍Linux操作系统的详细发展历程。Linux是一个自由和开放源代码的操作系统内核,由林纳斯托瓦兹(Linus Torvalds)于1991年首次发布。以下是Linux操作系统的主要发展里程碑:1. Linux 0.01 (1991)发布日期&#xff1a…

LNMP架构+wordpress实现动静分离

WordPress简称WP,最初是一款博客系统,后逐步演化成一款免费的CMS(内容管理系统/建站系统)。 WordPress网站的适用场景: 博客 企业官网 作品集网站 电商平台 线上教育系统 论坛和社群网站 甚至会员系统、订阅内容…

智慧灯杆:不止于照明,塔能科技的城市感知网络野心

当夜幕悄然降临,城市里的路灯便依次亮了起来,它们可不单单照亮了行人前行的路以及车辆行驶的道路,实际上还在悄无声息地经历着一场变革。现如今的路灯,早已不再仅仅充当单纯的照明工具这么一个角色了,而是逐渐转变成了…

【Linux内核模块】调试技巧

内核模块开发最让人头疼的不是写代码,而是调试 —— 代码编译通过了,加载后却要么没反应,要么直接让系统崩溃。这就像在黑屋子里修机器,看不见摸不着。其实内核调试有一套成熟的工具箱,掌握这些工具和技巧,…

RK3568笔记九十一:QT环境搭建

若该文为原创文章,转载请注明原文出处。 记录按照正点原子给的手册搭建QT环境 参考《09【正点原子】ATK-DLRK3568_Qt开发环境搭建V1.2.pdf》 一、安装 1、下载 https://mirrors.sau.edu.cn/qt/archive/online_installers/4.6/qt-unified-linux-x64-4.6.0-online.run 2、赋…

面试实战,问题十六,Java面试,消息队列,如何避免消息重复消费,怎么回答

在Java面试中,关于消息队列如何防止消息被重复消费的问题,可以从以下几个方面进行回答,结合系统架构设计、消息队列机制和业务逻辑处理,确保在不同场景下实现消息的幂等性。 1. 消息队列重复消费的根本原因 消息重复消费的根本原因…

PDF转图片实用指南:如何批量高效转换?

将PDF转换为图片后,可以更方便地在演示文稿、网页或电子相册中使用这些资料,以便更好地展示信息。它 是一款支持多文件批量转换的工具,可将多个 PDF 文档一键转换为图片格式。虽然界面为英文,但操作简单,不影响使用。你…

走入Linux的世界:编辑器Vim

嘿,各位技术潮人!好久不见甚是想念。生活就像一场奇妙冒险,而编程就是那把超酷的万能钥匙。此刻,阳光洒在键盘上,灵感在指尖跳跃,让我们抛开一切束缚,给平淡日子加点料,注入满满的pa…

PyTorch中神经网络的模型构建

要构建自定义模型,需完成两个核心步骤:继承 nn.Module 类;重载 __init__ 方法(初始化)和 forward 方法(前向计算) 神经网络的构造 初始化方法(__init__) def __init__…

QML QtCharts坐标轴系统

QtCharts是Qt框架中强大的数据可视化模块,它提供了丰富的图表类型和灵活的坐标轴系统,能够满足各种数据展示需求。本文将全面介绍QML中QtCharts的坐标轴系统,包括数值坐标轴(ValueAxis)、对数坐标轴(LogValueAxis)、分类坐标轴(CategoryAxis)…

TI 2025全国电赛猜题

本科组可能的题目方向本科组器材更侧重高频信号处理、复杂控制系统、精密测量及多设备协同,可能涉及以下题目:四旋翼飞行器相关任务题目示例:设计 “基于四旋翼的 UV 光控自主导航系统”任务要求:利用四旋翼飞行器(最大…

Python自动化运维实战指南

什么是自动化运维定义与背景自动化运维是指利用工具和脚本自动执行传统上需要人工操作的IT运维任务,包括但不限于服务器配置管理、软件部署、监控告警、日志分析等日常工作。随着互联网业务规模的扩大,传统手工运维方式已无法满足快速部署、规模化管理等…

k8s的csi对接GPFS

在 Kubernetes(k8s)集群中,通过 CSI(Container Storage Interface)对接 GPFS(General Parallel File System,现为 IBM Spectrum Scale)是实现高性能共享存储的重要方案。GPFS 作为并…

HTB赛季8靶场 - era

nmap扫描 └─$ nmap -p- --min-rate 1000 -T4 10.129.137.201 -oA nmapfullscan Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-07-27 21:19 EDT Warning: 10.129.137.201 giving up on port because retransmission cap hit (6). …

Bug猫学习史#1:面向对象

在Java编程中,掌握几个核心概念对深入学习至关重要:类属性建议采用包装类以提升灵活性;建造者模式中this关键字能有效简化对象构建过程;static关键字涉及类的加载机制;接口默认使用public修饰符并支持默认方法实现&…

优测推出HarmonyOS全场景测试服务,解锁分布式场景应用卓越品质!

随着HarmonyOS NEXT“纯血鸿蒙”的全面商用,生态正以前所未有的速度重构终端操作系统格局。对于APP厂商而言,应用测试需要从单一设备思维向场景化服务验证转变。优测云服务平台正式推出 HarmonyOS全场景测试解决方案,针对鸿蒙系统提供功能测试…

二层环路与三层环路:原理、区别与解决方案全解析

网络环路是网络运维中最常见也最具破坏性的问题之一。本文将深入浅出地解析二层环路和三层环路的核心概念,通过对比分析帮助读者全面理解这两种环路的形成机制、危害表现及解决方案。一、环路问题概述 1.1 什么是网络环路 网络环路是指数据包在网络中循环传输无法到…

Python爬虫库性能与选型实战指南:从需求到落地的全链路解析

目录 一、性能基准测试:用数据打破认知误区 1. 静态页面采集:效率与资源的终极对决 2. 动态页面渲染:速度与真实性的博弈 二、场景化选型矩阵:从需求到工具的精准映射 1. 小规模快速原型开发(≤1000页)…

uni-app switch(开关选择器) BUG

uni-app switch(开关选择器) BUGBUG:uni-app中的switch的checked属性并不能根据根据绑定的动态数据进行调整switch开关选择器(BUG)switch开关选择器(BUG) - 我的使用用途switch开关选择器&#…

微服务架构中的资源调度与负载均衡实践

更多云服务器知识,尽在hostol.com在今天这个快速发展的数字化时代,微服务架构已经成为了现代企业系统开发的主流。随着技术的不断进步,企业的业务需求也在不断地变化,传统的单体架构已经无法满足日益复杂的应用需求。微服务架构&a…