news 2026/4/23 12:22:07

MySQL必备基础

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL必备基础

MySQL 必备基础(2025-2026 生产视角最实用版本)

以下内容把绝大多数公司在面试、接手项目、日常维护中最常遇到的 MySQL 核心知识点浓缩成一份“速查 + 理解 + 避坑”清单,适合快速建立完整认知框架。

一、MySQL 架构与存储引擎(必须记住的几张图)

  1. 最经典的逻辑架构图(三层)
客户端连接层 ←→ 服务层(SQL Interface → Parser → Optimizer → Executor) ↓ 存储引擎层(InnoDB / MyISAM / Memory / Archive …) ↓ 文件系统 + 日志(redo log、binlog、undo log、doublewrite buffer …)
  1. 最常被问的存储引擎对比表(2025-2026 真实生产分布)
特性InnoDB(默认,95%+场景)MyISAMMemory现在还在用吗?
事务支持支持(ACID)不支持不支持
行级锁支持表级锁表级锁
外键支持不支持不支持
崩溃恢复支持(redo log + undo log)不支持(容易丢数据)重启丢失
全文索引支持(5.6+,5.7+较好,8.0+很强)支持(较老版本较好)不支持视情况
聚簇索引是(主键就是聚簇索引)否(非聚簇)
压缩表支持(ROW_FORMAT=COMPRESSED)支持不支持偶尔
适合场景绝大多数 OLTP 系统只读历史表、日志表临时表、小表极致速度极少

结论一句话
除非你有非常明确的理由,否则一律用 InnoDB

二、MySQL 必须记住的 12 个核心概念(按重要性排序)

  1. InnoDB 聚簇索引 vs 非聚簇索引
    主键 = 聚簇索引,叶子节点存整行数据
    普通索引(二级索引)叶子节点存主键值 → 回表

  2. 索引的本质
    索引 = 有序数据结构(B+树为主) + 快速查找

  3. B+树 vs B树(面试最爱问)

    项目B+树(InnoDB主流)B树
    叶子节点只存数据 + 顺序链表存所有节点数据
    非叶子节点只存键,不存数据存键 + 数据
    范围查询效率极高(顺序链表)较差
    扇出(fanout)更高(节点更小)较低
  4. InnoDB 三大日志

    日志作用位置刷盘策略崩溃恢复靠它吗?
    redo log物理日志,记录“改了什么”ib_logfile0/1顺序写,持久化靠它
    undo log逻辑日志,回滚 + MVCC回滚段(表空间内)辅助
    binlog逻辑日志,用于主从复制binlog 文件提交时刷盘(sync_binlog)否(复制用)
  5. redo log 与 binlog 的两阶段提交

    prepare → write binlog → commit → write redo log commit

    保证主从一致性和崩溃恢复的一致性。

  6. MVCC(多版本并发控制)核心字段

    • DB_TRX_ID(创建版本)
    • DB_ROLL_PTR(回滚指针)
    • DB_ROW_ID(行ID,非必须)
    • ReadView(读视图)决定可见版本
  7. 四种隔离级别 + 三个并发问题

    隔离级别脏读不可重复读幻读MySQL 默认
    READ UNCOMMITTED很少用
    READ COMMITTEDOracle 默认
    REPEATABLE READ有*MySQL 默认
    SERIALIZABLE性能最差

    *MySQL RR 通过间隙锁 + Next-Key Lock 大部分场景解决幻读

  8. 间隙锁(Gap Lock)、Next-Key Lock、Record Lock

    • Record Lock:锁住单行记录
    • Gap Lock:锁住索引记录之间的“间隙”
    • Next-Key Lock = Record Lock + Gap Lock(RR 默认)
  9. InnoDB 行格式(Row Format)对比

    格式变长字段长度列表NULL 位图记录头信息列数据行溢出页指针压缩主流程度
    Compact曾经主流
    Redundant很老
    Dynamic有(优化)现代推荐
    Compressed有(压缩)大表常用

    现在建表默认 Dynamic,建议显式写 ROW_FORMAT=DYNAMIC

  10. change buffer、doublewrite buffer、自适应哈希索引

    • change buffer:延迟写二级索引(insert buffer + delete buffer + purge buffer)
    • doublewrite buffer:防止部分页写入(系统表空间的连续 128 个页)
    • 自适应哈希索引(AHI):InnoDB 自己根据访问模式建立的内存哈希索引(可关闭)
  11. InnoDB 锁类型速查表

    锁类型加锁方式场景是否阻塞其他事务
    共享锁(S)SELECT … LOCK IN SHARE MODE读锁,允许其他读,不允许写写阻塞
    排他锁(X)SELECT … FOR UPDATE / DML写锁,别人不能读也不能写全阻塞
    意向锁自动加(IS/IX)表级意向,快速判断表是否有行锁不阻塞
    记录锁精准命中索引where id = 5
    间隙锁范围查询非唯一索引where id > 5 and id < 10防幻读
    Next-Key Lock范围 + 记录RR 隔离级别默认
  12. 慢查询日志 & 执行计划必看字段

    • type:system > const > eq_ref > ref > range > index > ALL(越靠前越好)
    • key:实际使用的索引
    • rows:扫描行数(估算)
    • Extra:Using index / Using where / Using temporary / Using filesort(后两者要警惕)

三、MySQL 基础最常考的 20 个问题(建议默写答案)

  1. InnoDB 和 MyISAM 最大的区别是什么?
  2. 什么是聚簇索引?为什么建议用自增主键?
  3. 为什么不推荐 UUID 做主键?
  4. redo log、undo log、binlog 分别是什么?谁负责什么?
  5. 什么是两阶段提交?为什么需要它?
  6. MVCC 的 ReadView 什么时候生成?RR 和 RC 区别在哪?
  7. 什么是幻读?MySQL RR 是怎么解决幻读的?
  8. Next-Key Lock 具体锁住什么范围?
  9. change buffer 什么时候合并?什么时候不使用?
  10. doublewrite buffer 解决了什么问题?
  11. 什么是回表?怎么尽量避免回表?
  12. 索引下推(ICP)是什么?什么时候生效?
  13. 什么是前缀索引?什么时候用?
  14. 为什么 LIKE ‘abc%’ 可以走索引,而 ‘%abc’ 不行?
  15. 联合索引的“最左前缀原则”是什么?
  16. 什么时候索引会失效?
  17. explain 中 Using filesort 和 Using temporary 分别代表什么?
  18. InnoDB 怎么实现自增主键不重复?
  19. MySQL 8.0 相对于 5.7 最重大的几个变化是什么?
  20. 你线上遇到过最严重的慢查询/死锁是怎么解决的?

这份清单基本覆盖了 90% 的 MySQL 基础面试 + 生产问题。

如果你想针对其中任意一点展开成“超详细版”(比如 MVCC 详细推演、间隙锁范围图解、change buffer 合并时机等),直接告诉我具体序号或关键词即可。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 11:54:13

基于掩码SM4算法的选择明文相关碰撞攻击方法与流程MatlabSimulink优化算,设计程序模型文档报告测试定制(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于掩码SM4算法的选择明文相关碰撞攻击方法与流程MatlabSimulink优化算,设计程序模型文档报告测试定制(设计源文件万字报告讲解)&#xff08;支持资料、图片参考_相关定制&#xff09;_文章底部可以扫码(1)遗传GA算法,粒子群PSO算法,退火SA算法,蜂群ABC算法,鱼群FSA算法,灰狼G…

作者头像 李华
网站建设 2026/4/23 11:59:50

Java基于Spring Boot+Vue的网上招聘系统

项目说明 随着社会的快速发展和信息化时代的到来&#xff0c;高校毕业生就业管理面临着前所未有的挑战与机遇。传统的就业管理方式&#xff0c;如人工记录、纸质文档存储等&#xff0c;已难以满足当前大规模、高效率的信息管理需求。因此&#xff0c;开发一套高效、智能化的网上…

作者头像 李华
网站建设 2026/4/15 16:20:20

技术炒股心得

技术炒股心得&#xff1a;工具为骨&#xff0c;心法为魂&#xff08;附避坑指南&#xff09;重要前提&#xff1a;技术分析是概率工具&#xff0c;非“圣杯”。所有策略需配合严格风控&#xff0c;投资有风险&#xff0c;本文仅为经验总结&#xff0c;不构成任何投资建议。&…

作者头像 李华
网站建设 2026/4/19 3:41:45

24GB显卡轻松上手InternLM-20B大模型,手把手教程来啦

无论在本地电脑还是在云端都可以轻松使用该镜像&#xff0c;现在就让我们跟着教程一起体验InternLM-20B的魅力吧~ 本地电脑运行 如果您本地有GPU&#xff08;显存24GB及以上&#xff09;&#xff0c;可以在本地CG客户端直接使用&#xff0c;即可获得和AutoDL云端一致的使用体…

作者头像 李华
网站建设 2026/4/23 11:26:41

最强开源模型新王通义千问2.5 72B被我用4GB老显卡本地跑通了

炸裂&#xff01;最强开源模型一夜之间易主。阿里发布千问2.5模型&#xff0c;72B版本在MMLU、MATH、MBPP等大部分评测指标上都超过了Llama3 405B&#xff0c;甚至一些指标也超过了GPT4o。正式加冕最强开源模型新王&#xff01; 今天要挑战用我的4GB老显卡不做量化、不做压缩&…

作者头像 李华