当前位置: 首页 > article >正文

MySQL 高频面试题-01

在去面试之前很多人天天背“八股文”结果一到现场被面试官稍微一变形就问懵了。比如“你天天说 B 树那为什么不用 B 树不用红黑树它俩到底差在哪”“既然索引能加速那我把所有字段全加上索引不就完事了”今天不聊那些课本上的理论直接从面试官的抓人眼球的提问逻辑出发复盘 4 个最核心、最容易被深挖的 MySQL 高频大坑。一、 铁打的 B 树为什么红黑树和 B 树不招人待见面试官最喜欢问“为什么 MySQL 索引底层要用 B 树而不是 B 树或者红黑树”面试官的潜台词我不是想听你背诵 B 树的定义我想看你懂不懂磁盘 I/O 的代价。我们可以把红黑树、B 树、B 树的核心差异直接拉一个对比树的数据结构为什么不用它 / 为什么选它一句话人话解释红黑树 (Red-Black Tree)高度太高。它是二叉树数据一多树的高度就会飙升。查个数据要下好几十层每一次下层都是一次磁盘 I/O 寻道慢到吐血。B 树 (B-Tree)叶子和非叶子节点都存数据。导致一个磁盘页能存的索引变少。树变胖了但不够矮。而且做范围查询比如 id 10时得在树里来回上跳下窜。B 树 (B Tree)绝配。只有叶子节点存数据非叶子节点只存索引。叶子节点之间还有双向链表。树极矮通常 3-4 层就能存千万级数据。非叶子节点能塞更多索引范围查询顺着链表一拉到底。避坑核心记住这个数字InnoDB 的一个页默认是16KB。如果是 B 树非叶子节点不存指针和索引之外的 Data那一个页能存上千个键值。3 到 4 层的 B 树就能轻松撑起千万级别的数据查询这意味着找任何一条数据最多只需要 3 到 4 次磁盘读写。二、 聚簇索引 vs 非聚簇索引到底回了两次家很多人分不清这两个概念经常在“回表”这里被面试官绕进去。聚簇索引Clustered Index人话版索引和数据是在一起的。叶子节点上存的就是这一行的完整数据。注意一张表只能有一个聚簇索引一般是主键。如果没有主键MySQL 会自己找个唯一索引或者隐藏的 row_id。非聚簇索引 / 二级索引Secondary Index人话版索引和数据分家了。叶子节点上存的是主键的值。面试名场面什么是回表怎么避免看下面这两个 SQL假设 age 字段加了普通索引SQL-- SQL A SELECT id, age FROM users WHERE age 18; -- SQL B SELECT id, name, age FROM users WHERE age 18;SQL A 不需要回表覆盖索引因为通过 age 索引树找到了叶子节点叶子节点上刚好有 age 和主键 id面试官要的数据都在这了直接返回SQL B 需要回表拿着 age 索引树找到主键 id 之后发现面试官还要 name。完了age 树上没有 name只能拿着主键 id再去聚簇索引树里重新查一遍拿到完整的行数据。这个过程就叫回表。优化老鸟经验尽量不要写 SELECT *。用联合索引把高频查询的字段包进来达成覆盖索引直接干掉回表性能能飙升。三、 事务隔离级别MVCC 是怎么解决“幻读”的这个是全场最难啃的骨头AI 写的文章喜欢堆砌一堆“读未提交、读已提交、可重复读、串行化”毫无重点。面试官一般怎么问“MySQL 默认是 RR可重复读级别它解决幻读了吗怎么解决的”标准答案与细节拆解答案是部分解决了。MySQL 采用了MVCC多版本并发控制 锁间隙锁/临键锁的组合拳。对于普通的 SELECT快照读通过Read View读视图和Undo Log回滚日志的版本链来解决。每次读取都是读取当前事务开始时的那个“快照”别的事务新插入的数据它根本看不见所以不会出现幻读。对于 SELECT ... FOR UPDATE 或者 UPDATE当前读这时候不能看快照了必须看最新数据。MySQL 就会直接祭出Gap Lock间隙锁或者Next-Key Lock临键锁。比如你锁定了 id 在 5 到 10 之间的区间其他事务在这期间想插入一个 id 7 的数据对不起直接阻塞等我事务提交了你才能动。四、 慢 SQL 优化别一上来就说加索引先看执行计划面试官“你线上遇到过慢 SQL 吗怎么排查优化的”避坑千万别答“加索引”。正确的工程思维是先排查后定位再优化。老鸟的规范排查三步法1. 定位慢查询线上开启 slow_query_log慢查询日志把超过比如 1s 的 SQL 全部抓出来。2. 扔进 EXPLAIN 分析在 SQL 前面加上 EXPLAIN重点看这几个指标type访问类型如果出现 ALL全表扫描或者 index全索引扫描那基本上就是要挨板子了。至少要优化到 range范围扫描或者 ref。key实际用到的索引。如果是 NULL说明没走索引。rows预估扫描的行数。这个数越大越危险。Extra如果看到 Using filesort用到了文件排序没走索引排序或者 Using temporary用了临时表比如复杂的 GROUP BY必须优化如果看到 Using index说明触发了覆盖索引非常完美。3. 针对性优化方案索引失效了检查是不是对字段写了函数比如 WHERE YEAR(create_time) 2026、隐式类型转换字符串没加单引号、或者违背了最左匹配原则。单表数据量太大考虑冷热数据分离、或者是历史数据归档。总结给面试官留下好印象的口诀面试回答 MySQL 问题记住三个词磁盘I/O、空间开销、数据一致性。任何底层的设计为什么用 B 树、为什么要回表、为什么用 log都是在平衡这三者的关系。如果你觉得这篇复盘对你有帮助点赞、收藏、关注三连走一波祝大家都能拿到心仪的 Offer

相关文章:

MySQL 高频面试题-01

在去面试之前,很多人天天背“八股文”,结果一到现场被面试官稍微一变形就问懵了。比如:“你天天说 B 树,那为什么不用 B 树?不用红黑树?它俩到底差在哪?”“既然索引能加速,那我把所…...

Structured3D完整指南:如何用3D结构化数据轻松构建智能室内场景

Structured3D完整指南:如何用3D结构化数据轻松构建智能室内场景 【免费下载链接】Structured3D [ECCV20] Structured3D: A Large Photo-realistic Dataset for Structured 3D Modeling 项目地址: https://gitcode.com/gh_mirrors/st/Structured3D 如果你正在…...

电子书转有声书完整指南:一键实现1158种语言的AI语音合成

电子书转有声书完整指南:一键实现1158种语言的AI语音合成 【免费下载链接】ebook2audiobook Generate audiobooks from e-books, voice cloning & 1158 languages! 项目地址: https://gitcode.com/GitHub_Trending/eb/ebook2audiobook 你是否曾希望将心爱…...

铜钟音乐:在信息洪流中找回纯粹听歌体验的现代Web应用

铜钟音乐:在信息洪流中找回纯粹听歌体验的现代Web应用 【免费下载链接】tonzhon-music 铜钟 Tonzhon (tonzhon.whamon.com): 干净纯粹的音乐平台 (铜钟已不再使用 tonzhon.com,现在的 tonzhon.com 不是正版的铜钟) 项目地址: https://gitcode.com/GitH…...

Solaar 4.0:解锁罗技设备的完整Linux管理体验

Solaar 4.0:解锁罗技设备的完整Linux管理体验 【免费下载链接】Solaar Linux device manager for Logitech devices 项目地址: https://gitcode.com/gh_mirrors/so/Solaar 你是否曾为管理多款罗技无线设备而烦恼?不同设备需要不同的配置工具&…...

哈佛教授刚警告“别让AI改写论文”,但我反手就用GPT这套技巧发了篇核心

各位同仁好,我是七哥。一个在高校里从事人工智能相关领域研究,钻研用大模型AI实操的学术人。可以和七哥交流学术写作或Gemini、GPT、Claude等大模型学术实操相关问题,多多交流,相互成就,共同进步。 多数学术同仁在撰写核心期刊论文时,常常会陷入两个极端:要么面对空白文…...

终极指南:如何用文字描述快速生成专业CAD图纸

终极指南:如何用文字描述快速生成专业CAD图纸 【免费下载链接】text-to-cad-ui A lightweight UI for interacting with the Zoo Text-to-CAD API. 项目地址: https://gitcode.com/gh_mirrors/te/text-to-cad-ui 还在为复杂的CAD软件界面感到困惑吗&#xff…...

H5P交互式视频制作终极指南:快速创建引人入胜的互动学习内容

H5P交互式视频制作终极指南:快速创建引人入胜的互动学习内容 【免费下载链接】h5p-interactive-video 项目地址: https://gitcode.com/gh_mirrors/h5/h5p-interactive-video 在数字化教育时代,如何让视频内容更具互动性和教育价值?H5…...

B站直播神器:神奇弹幕全方位操作指南

B站直播神器:神奇弹幕全方位操作指南 【免费下载链接】MagicalDanmaku 本仓库及所有相关项目已永久停止开发、维护和任何形式的分发。 项目地址: https://gitcode.com/gh_mirrors/bi/MagicalDanmaku 直播难题:为什么你需要智能弹幕助手 每个B站主…...

Wannakey:无需支付赎金,从内存中恢复WannaCry加密文件

Wannakey:无需支付赎金,从内存中恢复WannaCry加密文件 【免费下载链接】wannakey Wannacry in-memory key recovery 项目地址: https://gitcode.com/gh_mirrors/wa/wannakey Wannakey是一款专为WannaCry勒索软件受害者设计的内存密钥恢复工具&…...

OpenCorePkg黑苹果引导配置:从传统引导到现代解决方案的完整迁移指南

OpenCorePkg黑苹果引导配置:从传统引导到现代解决方案的完整迁移指南 【免费下载链接】OpenCorePkg OpenCore bootloader 项目地址: https://gitcode.com/gh_mirrors/op/OpenCorePkg 面对黑苹果引导过程中的稳定性问题、安全漏洞和硬件兼容性限制&#xff0c…...

React Starter Kit 团队协作:如何建立统一的开发规范

React Starter Kit 团队协作:如何建立统一的开发规范 【免费下载链接】react-starter-kit Start your first React App. By using React, Redux, and React-Router. 项目地址: https://gitcode.com/gh_mirrors/reac/react-starter-kit React Starter Kit 是一…...

深入理解Famous Engine场景图系统:构建复杂UI的10个技巧

深入理解Famous Engine场景图系统:构建复杂UI的10个技巧 【免费下载链接】engine 项目地址: https://gitcode.com/gh_mirrors/engine2/engine Famous Engine是一个强大的开源框架,专为构建高性能、复杂交互的用户界面而设计。其核心的场景图系统…...

软考 系统架构设计师系列知识点之杂项集萃(155)

接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(154) 第293题 给定关系R(A1, A2, A3, A4, A5)上的函数依赖集F={A1->A2A5, A2->A3A4, A3->A2},R的候选关键字()。函数依赖()∈F+。 第1空 A. A1 B. A1A2 C. A1A3 D. A1A2A3 正确答案:A。 第2空…...

CANN/asc-devkit:uint32转uint16向量转换API

asc_uint322uint16 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitc…...

AI 超声波电动护手霜加热器智能功率 MOSFET 完整选型方案

2026年随着 AI 技术在个人护理领域的深度渗透(如智能温控、超声波促渗、肤质自适应),电动护手霜加热器对功率 MOSFET 提出更高要求:低压大电流、超小封装、逻辑电平驱动、高可靠性。微碧半导体(VBsemi)基于…...

免费图片去水印工具有哪些?2026 在线图片去水印软件推荐指南

日常刷到好看的图片想做壁纸或素材,角落那个突兀的水印总让人头疼。不管是自己拍摄时误触了时间水印,还是下载的参考图需要二次编辑,找到一个顺手且确实能用的去水印工具,是许多人在 2026 年依然高频遇到的需求。这篇文章就来整理…...

大学生几种职业资格证书有哪些?2026年高含金量考证指南与就业规划

你好呀!👋 看到你在这个时间点搜索关于证书的话题,我完全能理解你的心情。转眼间我们已经步入 2026年,当下的就业环境比起几年前,确实发生了不少变化。我也接触过很多像你一样的同学,大家都有点焦虑&#x…...

大学生证书分为哪几种?2026年最新含金量排名与考证避坑指南

嗨,各位正在象牙塔里奋斗或者即将步入社会的同学们!👋转眼间我们已经迈入了2026年,就业市场的风向标其实每天都在发生细微的变化。我特别能理解大家现在的焦虑感——看着周围的同学都在疯狂刷题考证,自己如果不考点什么…...

【入门+总结】万字复盘黑马点评|从业务到 Redis 实战,面试直接背

🔥个人主页:北极的代码(欢迎来访) 🎬作者简介:java后端学习者 ❄️个人专栏:苍穹外卖日记,SSM框架深入,JavaWeb ✨命运的结局尽可永在,不屈的挑战却不可须臾或…...

【LeetCode刷题日记】617.合并二叉树(空间换安全,还是原地省内存)

🔥个人主页:北极的代码(欢迎来访) 🎬作者简介:java后端学习者 ❄️个人专栏:苍穹外卖日记,SSM框架深入,JavaWeb ✨命运的结局尽可永在,不屈的挑战却不可须臾或…...

APKToolGUI:让Android逆向变得像搭积木一样简单

APKToolGUI:让Android逆向变得像搭积木一样简单 【免费下载链接】APKToolGUI GUI for apktool, signapk, zipalign and baksmali utilities. 项目地址: https://gitcode.com/gh_mirrors/ap/APKToolGUI 你是否曾经想要修改一个Android应用,却发现需…...

如何用bsf创建第一个3D场景:从零开始的完整教程

如何用bsf创建第一个3D场景:从零开始的完整教程 【免费下载链接】B3DFramework Modern C library for the development of real-time graphical applications 项目地址: https://gitcode.com/gh_mirrors/bs/B3DFramework bsf(B3DFramework&#x…...

Gramophone安全与权限管理:Android 13+存储权限最佳实践

Gramophone安全与权限管理:Android 13存储权限最佳实践 【免费下载链接】Gramophone A sane music player built with media3 and material design library that is following androids standard strictly. 项目地址: https://gitcode.com/gh_mirrors/gr/Gramopho…...

苹果CMS V10终极指南:3步打造专业视频网站,新手也能轻松上手

苹果CMS V10终极指南:3步打造专业视频网站,新手也能轻松上手 【免费下载链接】maccms10 苹果cms-v10,maccms-v10,麦克cms,开源cms,内容管理系统,视频分享程序,分集剧情程序,网址导航程序,文章程序,漫画程序,图片程序 项目地址: https://gitcode.com/gh…...

Qt5 super module网络编程指南:WebSocket、HTTP、MQTT通信实现

Qt5 super module网络编程指南:WebSocket、HTTP、MQTT通信实现 【免费下载链接】qt5 Qt5 super module 项目地址: https://gitcode.com/gh_mirrors/qt/qt5 Qt5 super module是一个功能强大的跨平台应用程序开发框架,提供了丰富的网络编程功能&…...

ng-demos构建工具对比:Grunt vs Gulp在Angular项目中的实战应用

ng-demos构建工具对比:Grunt vs Gulp在Angular项目中的实战应用 【免费下载链接】ng-demos variety of angular demos 项目地址: https://gitcode.com/gh_mirrors/ng/ng-demos 在Angular项目开发中,构建工具的选择直接影响开发效率和项目维护性。…...

MVVMFramework性能优化:让你的iOS应用运行如飞的10个技巧

MVVMFramework性能优化:让你的iOS应用运行如飞的10个技巧 【免费下载链接】MVVMFramework (OC版)总结整理下一个快速开发框架,以更优雅的方式写代码,做一个代码艺术家。分离控制器中的代码,已加入cell自适应高度,自动缓…...

独立开发者如何利用Taotoken同时管理多个AI项目的模型调用

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 独立开发者如何利用Taotoken同时管理多个AI项目的模型调用 对于独立开发者而言,同时维护多个小型产品是常态。每个产品…...

ElevenLabs支持广西话吗?2024最新实测结果曝光:仅2个API参数决定能否合成地道“梧州腔”

更多请点击: https://intelliparadigm.com 第一章:ElevenLabs广西话语音支持的现状与背景 ElevenLabs 作为全球领先的AI语音合成平台,目前尚未在官方API文档、语言列表或控制台界面中提供对广西话(含南宁白话、梧州话、玉林话等粤…...