MySQL面试必问的10个基础问题(附详细解析)

大厂面试快问快答,10分钟搞定MySQL夺命20问,你都能接住吗? 号外号外!《死磕 Java 并发编程》系列连载中,大家可以关注一波: 「死磕 Java 并发编程05」阿里面试失败后,一气之下我图解了Java中18把锁 「死磕 Java 并发编程04」说说Java Atomic 原子类的实现原理 「死磕 Java 并发编程03」阿里二面,面试官:说说 Java CAS 原理? 「死磕 Java 并发编程02」面试官:说说什么是 Java 内存模型(JMM)? 「死磕 Java 并发编程01」10张图告诉你Java并发多线程那些破事 先看下目录: 1说说. 阅读详情

一、事务相关(必考!)

1. 什么是ACID特性?

(这里超级重要)ACID是事务的四大特性:

  • 原子性(Atomicity):要么全成功,要么全失败!(比如转账时A扣钱B没收到?绝对不行!)
  • 一致性(Consistency):数据必须符合所有约束(就像转账前后总金额必须一致)
  • 隔离性(Isolation):多个事务并发时要隔离(后面会详细讲隔离级别)
  • 持久性(Durability):提交后数据永久保存(断电也不怕)

2. 事务隔离级别有哪些?

(面试官最爱追问的问题)从低到高分为:

  1. 读未提交(Read Uncommitted):能读到别人没提交的数据(容易脏读)
  2. 读已提交(Read Committed):只能读到已提交数据(Oracle默认)
  3. 可重复读(Repeatable Read):同一事务多次读取结果一致(MySQL默认)
  4. 串行化(Serializable):完全隔离(性能最差)

举个栗子🌰:小明转账时,小红查余额看到中间状态就是脏读!(用读未提交会出现这种情况)

二、索引优化(重点!)

3. B+树索引为什么比B树好?

(数据结构必考题)主要三点优势:

  1. 非叶子节点只存键值,能放更多数据(减少IO次数)
  2. 叶子节点形成有序链表(范围查询超快)
  3. 所有数据都存在叶子节点(查询稳定性好)

4. 聚簇索引 vs 非聚簇索引

(很多人分不清的概念)

  • 聚簇索引:数据按索引顺序存储(比如InnoDB的主键索引)
  • 非聚簇索引:索引和数据分离(像MyISAM的索引)

划重点👉:一个表只能有一个聚簇索引!

5. 什么情况索引会失效?

(实际开发中经常踩坑)

  1. 使用!=或<>操作符
  2. 对字段进行函数操作(如YEAR(create_time)=2023)
  3. 类型转换(比如字符串字段传了数字)
  4. 最左前缀原则失效(复合索引没按顺序用)
  5. LIKE以通配符开头(%abc)

三、锁机制(进阶必备)

6. 共享锁和排他锁区别

  • 共享锁(S锁):读锁,其他事务可以加S锁但不能加X锁
  • 排他锁(X锁):写锁,其他事务不能加任何锁

口诀:读读不冲突,读写/写写都冲突!

7. 死锁如何产生?怎么解决?

(生产环境常见问题)
产生条件:

  1. 互斥访问
  2. 持有并等待
  3. 不可剥夺
  4. 循环等待

解决方案:

  • 设置超时时间(innodb_lock_wait_timeout)
  • 死锁检测(innodb_deadlock_detect)
  • 保持事务短小精悍
  • 按固定顺序访问资源

四、SQL优化技巧(实战重点)

8. EXPLAIN关键字怎么看?

(调优必备技能)重点关注:

  • type:访问类型(最好到ref/eq_ref)
  • key:实际使用的索引
  • rows:预估扫描行数
  • Extra:Using filesort/Using temporary要警惕!

9. 分库分表常用方案

(高并发场景必问)

  1. 垂直拆分:按业务拆分(用户表、订单表分开)
  2. 水平拆分:按数据分片(比如用户ID取模)
  3. 时间分表:按月/年分表(适合日志类数据)

注意⚠️:分库分表后要解决分布式事务问题!

五、其他高频问题

10. varchar和char的区别?

(看似简单实则暗藏玄机)

  • char:定长,适合存储固定长度数据(如手机号)
  • varchar:变长,适合长度变化大的数据(如地址)

关键点:varchar需要1-2字节存储长度信息,char会自动补空格!

附:三范式简单版

  1. 第一范式(1NF):属性不可再分
  2. 第二范式(2NF):消除部分依赖
  3. 第三范式(3NF):消除传递依赖

(实际开发中不必严格遵循,根据业务灵活处理)

六、写在最后

建议大家在理解这些概念后,一定要动手实践!比如:

  1. 用EXPLAIN分析自己的SQL
  2. 故意制造死锁观察现象
  3. 对比不同索引的查询效率

记住:数据库知识光背理论是不够的,要结合实际问题去理解。如果遇到不确定的问题,可以直接说"这个我需要查下文档确认",诚实比瞎蒙更靠谱哦~(完)

MySQL常见面试题汇总(建议收藏!!!) 目录一、索引相关(1)什么是索引?(2)索引是个什么样的数据结构呢?(3)为什么使用索引?(4)Innodb为什么要用自增id作为主键?(5)Hash 索引和 B+ 树索引有什么区别或者说优劣呢?(6)什么是聚簇索引(6)非聚簇索引一定会回表查询吗?(6)聚簇索引和非聚簇索引的区别(6)MyISAM和InnoDB实现B+树索引方式的区别是什么?(6)MySQL中有四种索引类型,可以简单说说吗?(6)覆盖索引是什么?(6)联合索引是什么?为什么需要注意联合索引中的顺序?(6)创建的索引有没有被使用到?或者说怎 阅读详情

相关推荐

MySQL 十大高频面试题解析(附答案)

掌握MySQL高频考点需理解底层原理(如B+树、MVCC)和实际场景应用(如索引优化、分库分表)。面试时结合项目经验回答更出彩!互动:你还遇到过哪些MySQL难题?评论区留言讨论!

weixin_62922042的博客 2197

MySQL最常问的10道面试题(2023详解版)

1.什么是聚集索引和非聚集索引简单来说,聚集索引就是基于主键创建的索引,除了主键索引以外的其他索引,称为非聚集索引,也叫做二级索引。由于在InnoDB引擎里面,一张表的数据对应的物理文件本身就是按照B+树来组织的一种索引结构,而聚集索引就是按照每张表的主键来构建一颗B+树,然后叶子节点里面存储了这个表的每一行数据记录。所以基于InnoDB这样的特性,聚集索引并不仅仅是一种索引类型,还代表着一种数据的存储方式。

weixin_46781683的博客 2万+

MySQL面试题-事务(答案版)

事务是由 MySQL 的引擎来实现的,我们常见的 InnoDB 引擎它是支持事务的。不过并不是所有的引擎都能支持事务,比如 MySQL 原生的 MyISAM 引擎就不支持事务,也正是这样,所以大多数 MySQL 的引擎都是用 InnoDB。

系统看你学习很认真,随机送了一个月会员! 1922

MySQL 精选 60 道面试题(含答案)

基础关系型数据库的优点非关系型数据库(NOSQL)的优点Server 层按顺序执行 SQL 的步骤为:根本原因扩展三种常见的索引底层数据结构:分别是哈希表、有序数组和搜索树。根据叶子节点的内容,索引类型分为主键索引和非主键索引。两个考虑因素:为什么选择 B+ 树:覆盖索引:索引下推:- 反过来,假设一个业务的更新模式是写入之后马上会做查询,那么即使满足了条件,将更新先记录在 change buffer,但之后由于马上要访问这个数据页,会立即触发 merge 过程。这样随机访问 IO 的次数不会减少,反而增加

hahazz233的博客 14万+

运维面试必问的MySQL高频面试题(2021年最新版)

前言 网上的运维面试题文章有非常多,在我的博客中也有一些是这些年运维人员面试的面试题,之前一些经典的面试题我已经整理到专栏《运维面试宝典》里,这个专栏里的面试技巧可以说永远不会过时,而且我会每隔一段时间进行补充和优化。 从一开始开专栏《运维面试宝典》的时候,规划是10篇文章,现在已经更新了55篇文章,后续还会增加。 现在网上很多题目早已不是当前的热门题目,没有必要在这些题目上花太多时间。 很多答案放现在已经不准确,可能会误导新人。 因此,我花了几天时间整理了一些时下高频的 Linux运维面试题,并反复斟酌,

互联网老辛 7935

机器人控制入门:用SAC算法让机械臂学会抓取(PyBullet仿真教程)

本文详细介绍了如何使用SAC算法在PyBullet仿真环境中训练机械臂完成抓取任务。通过强化学习中的软Actor-Critic(SAC)算法,结合熵最大化机制和双Q网络架构,有效解决了机械臂控制中的探索难题。教程包含环境搭建、算法原理、状态空间设计、奖励函数优化等核心内容,并提供了实用的训练技巧和参数调优指南。

weixin_29091105的博客 362

[特殊字符]MySQL面试必问的10个基础问题(附详细解析)

如何保证数据安全(ACID、锁、日志)如何提高查询性能(索引、执行计划、架构设计)建议准备面试时,每个知识点都自己动手实践一遍。比如配置主从复制,虽然现在云数据库很方便,但自己搭建一次能理解很多原理性问题。遇到问题时善用官方文档(MySQL :: MySQL 8.0 Reference Manual),比搜索引擎更可靠!

javajedi1的博客 799

Stata做DID平行趋势检验,用coefplot画图时遇到的3个坑及解决办法

本文详细解析了使用Stata进行DID平行趋势检验时,利用coefplot绘图可能遇到的三个常见问题及其解决方案。包括基线期选择陷阱、置信区间变形和图形元素错位,提供专业调试步骤和高阶技巧,帮助研究者高效完成学术级图表绘制。

weixin_42530458的博客 325

MySQL必问的10个基础面试题(附详细解析)

这个问题简直是面试官的"开胃菜",我面过的公司90%都会问到。索引就像字典的目录页(这个比喻超形象),能快速定位数据位置。但要注意索引的"两面性"——用得好查询起飞,乱用会拖慢写入速度!非叶子节点不存数据(相当于目录页只存页码)叶子节点用链表连接(范围查询快如闪电)树的高度更低(减少磁盘IO次数)使用!或<>操作符类型转换:字符串字段用数字查询最左前缀原则失效:联合索引(a,b,c)只查b和c。

xiaoweiaixuexi8的博客 825

反激开关电源设计全解析:从CCM/DCM原理到PCB布局实战

开关电源作为现代电子设备的能量转换核心,其核心原理是通过高频开关动作实现高效的电能变换。反激拓扑因其结构简单、成本低廉且易于实现电气隔离,成为小功率离线式电源的主流选择。其技术价值在于通过变压器耦合实现能量存储与传递,解决了安全隔离与多路输出等关键需求,广泛应用于充电器、适配器及家电供电等场景。本文聚焦反激电路,深入剖析其CCM与DCM两种工作模式的原理差异及选型考量,并结合伏秒平衡定律与RCD钳位等热词,详解从变压器计算到MOSFET选型的完整工程设计流程。

weixin_31951365的博客 343

OpenCV形状检测

开始定义我们的ShapeDetector类。我们将跳过这里的init构造函数,因为不需要初始化任何东西。#导入必要的包importcv2classShapeDetector#初始化形状名称并近似轮廓shape="unidentified"peri=cv2.arcLength(c,True)approx=cv2.approxPolyDP(c,0.04*peri,True)我们的检测方法,它只需要一个参数c,即我们试图识别的形状的轮廓。...

weixin_43229348的博客 9424

Redis面试必问的7个核心问题(附超详细解析)

Redis的学问三天三夜都讲不完,但搞定这7个问题绝对能让你在面试中脱颖而出!一定要动手搭集群!用docker起3主3从的Cluster模式,实操一遍增删节点学会用redis-benchmark做压力测试,亲眼看看单线程的威力要是还有其他Redis难题,评论区砸过来,咱们接着唠!

xiaowangabc1的专栏 1242

【SABRE 3D, SABRE 3DxT,LAM设备】2025年9月13日-安全配置-准备工作

请遵循本规程将SABRE 3D/3DxT/3D Scimitar系统设置为安全配置,以便能够在电镀单元、APT模块、XMM(或SRD)模块、工厂接口(FI)外壳或中央通道内部及周边区域执行作业p104-p117。在生产过程中暂停调度程序存在一定风险:若待维护模块未离线且在其他模块完成处理前重启调度程序,可能对生产晶圆造成影响。维护人员需特别注意电镀模块内的晶圆状态,并尽可能快速地恢复调度程序。确认待维护模块内无晶圆滞留暂停调度程序并将相应模块设置为离线状态打开模块检修门并关闭安全盖板(槽位)

weixin_46735260的博客 1368

面试必问的 MySQL,你懂了吗?

BATJTMD 面试必问的 MySQL,你懂了吗?

程序员囧辉 6万+

AMS TMF8820/21/28 SPAD 掩码和模式选择

为了实现最快的测距周期,将报告周期设置在测距周期以下的毫秒,以确保不会有等待时间。除了8X8固定了pixel的位置意外,其他模式客户可以设计自己的spad掩码,并将spad单独分配给通道。对于这些spad掩码,有一些约束。左下角提示红色代表光学中心,绿色方框表示单个spad,每个MP里可能有2X3个spad,也有2X5个spad,也有3X6+3个spad,这部分适配光学,最大的程度的利用spad区域。以下是几种预定义的spad掩码,非常灵活的配置,来适配各种3X3,4X4,8X8的模式选择。

dream it possible 700

光通量与辐射通量之间的换算

由理论和实验可知存在两种定义: 1W1W1W(瓦特)的频率为540×1012Hz540\times10^{12}Hz540×1012Hz(赫兹)的单色辐射的辐射通量等于683lm(流明)683lm(流明)683lm(流明).。 1lm1lm1lm的频率为540×1012Hz540\times10^{12}Hz540×1012Hz的单色通量等于1683=0.001464W\frac{1}{683}=0.001464W6831​=0.001464W。 从上述定义中我们可以得到什么呢?我们知道光速: c=3×

u011699626的博客 3273

MySQL面试必会的10个核心问题(附详细答案解析)

自己动手搭MySQL环境(Docker一分钟搞定)用sysbench做压力测试看官方文档的InnoDB章节在测试库故意制造锁等待,用show engine innodb status分析记住,面试不是背答案大赛,理解原理+实战经验才是王炸组合!下次面试遇到MySQL问题,把这些知识点像报菜名一样甩出来,保证让面试官怀疑到底是谁在面试谁(手动狗头)!

siliconscribe的博客 1127

Qt —— 百度地图 - 3、Qt调用高德在线地图功能示例(附源码)

Qt - 地图相关 —— 3、Qt调用高德在线地图功能示例(附源码)

498

面试官:你说对MySQL事务很熟?那我问你10个问题

学习关系型数据库MySQL是很好的切入点,大部分人工作中用惯了CRUD,对面试官刨根问底的灵魂拷问你还能对答如流吗?我们有必要了解一些更深层次的数据库基础原理。 整理了面试中,关于MySQL事务和存储引擎10个FAQ(Frequently asked questions),你想知道的都在这里。 什么是事务? 事务就是「一组原子性的SQL查询」,或者说一个独立的工作单元。如果数据库引擎能够成功地对数...

程序员柠檬 2万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

MySQL面试必问的5个核心问题(附实战解析)

MySQL就像乐高积木(这个比喻绝了),每个模块都要严丝合缝。用docker起个测试环境,随便搞破坏多关注官方文档的版本变化(比如MySQL8.0的窗口函数)实操时打开general_log看完整执行过程定期用pt-query-digest分析慢日志读十遍文档不如亲手搞崩一次数据库(真的!故障是最好的老师)。遇到问题别慌,先explain再优化,记住索引不是万能的,但没有索引是万万不能的!

kernelknight1的博客 1033

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

MySQL面试必问的8个核心问题(附详细解析)

作为后端开发必备技能之一,MySQL在技术面试中的出现频率高达90%!!!今天我们就来盘一盘那些高频出现的MySQL基础面试题,让你在面试官面前对答如流~(悄悄说:文末有隐藏加分项哦)MySQL就像瑞士军刀——功能多但要会用!本地安装MySQL实操练习用搭建主从集群关注慢查询日志(定期使用分析SQL记住:纸上得来终觉浅,绝知此事要躬行!遇到问题多查官方文档(MySQL :: MySQL 8.0 Reference Manual),祝大家面试顺利~

jiushiapwojdap的博客 969

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

MySQL面试必问的10个核心知识点(附详细解析)

MySQL的知识体系就像一棵大树,面试前建议画张知识图谱(事务/索引/锁这三大支柱必须吃透)。遇到不会的问题不要慌,可以说:“这个知识点我之前主要聚焦在应用层面,底层原理还需要进一步研究,面试后我会立即查漏补缺!

bestbee888的博客 1140

MySQL面试必问30题(附详细图文解析)

- 示例幻读场景BEGIN;-- 返回3条COMMIT;-- 返回4条(出现幻读)考点类别出现频率重点题目编号事务与锁90%1,2,8索引原理85%4,5,10性能优化80%10,11,13高可用架构70%7,12附加:最新MySQL 8.0特性窗口函数(RANK(), ROW_NUMBER())通用表表达式(WITH CTE)隐藏索引(INVISIBLE INDEX)原子DDL操作掌握这些核心问题,能覆盖90%的MySQL面试考察点。

weixin_62922042的博客 1608

10:00面试,10:08就出来了,问的问题有点变态。。。

整份文档一共有将近 200 页,全部为大家展示出来肯定是不太现实的,为了不影响大家的阅读体验就只展示了部分内容,还望大家海涵,希望能帮助到您面试前的复习且找到一个好的工作,也节省大家在网上搜索资料的时间来学习!

NHB234567的博客 8317

MySQL面试必问的decimal与float, double的问题

decimal与float, double的区别是什么?

小白的大数据之旅的博客 1200
上一篇: Shell脚本编程实战宝典:100个案例带你从小白到高手(保姆级教程)
下一篇: Kubernetes入门指南:从零开始掌握容器编排(实战技巧大放送!)
syntaxseeker
博客等级 码龄2年 161粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值