MySQL 八股文知识大全(面试+复习必备)

MySQL 八股文知识大全(面试+复习必备)
本文整理了 MySQL 最核心的八股文内容,涵盖范式、SQL 执行流程、存储引擎、索引、事务等各大模块,适合用于面试前复习与系统性学习。

1. 数据库三大范式

  • 第一范式(1NF):每一列必须是不可再分的原子项。
  • 第二范式(2NF):在 1NF 基础上,所有非主属性完全依赖于主键,而不是主键的一部分。
  • 第三范式(3NF):在 2NF 基础上,非主属性不依赖于其他非主属性。

2. 一条 SQL 的执行过程

  1. 连接器:建立连接、身份验证
  2. 查询缓存(MySQL 8.0 后废除)
  3. 解析器:生成语法树
  4. 优化器:选择最优执行计划
  5. 执行器:与存储引擎交互获取数据

3. 存储引擎对比

引擎特性描述
MyISAM不支持事务、外键,读性能好
Memory数据存储在内存中,性能高
InnoDB默认引擎,支持事务、行锁、崩溃恢复

4. 索引分类方式

  • 按数据结构:B+ Tree、Hash、Full-Text
  • 按物理存储:聚簇索引、非聚簇索引
  • 按字段特性:主键、唯一、普通、前缀索引
  • 按字段数量:单列、联合索引

5. 聚簇索引 vs 非聚簇索引

维度聚簇索引非聚簇索引
存储结构叶子节点存储完整数据叶子节点存储主键值指针
查询性能查询快,避免回表覆盖索引快,非覆盖需回表
唯一性每表仅一个可有多个
适用场景范围/排序查询精确查找

6. 如何选择主键

  • 字段唯一,不能为空
  • 建议使用递增 ID,避免页分裂
  • 避免使用业务字段
  • 分布式系统建议用雪花 ID

7. 索引实现原理

  • InnoDB 使用 B+Tree 结构
  • 非叶子节点存索引,叶子节点存数据
  • 叶子节点通过双向链表连接
  • 查询效率高,I/O 次数少(3~4次)

8. B+Tree 的特点

  • 所有数据在叶子节点
  • 非叶子节点只存键值
  • 叶子节点双向链表连接,适合范围查询
  • 高度小,查询快

9. B+Tree、BTree、Hash 对比

项目B+ TreeB TreeHash
范围查询支持不便不支持
查询稳定性稳定不稳定高效(仅等值)
适用场景大量数据中等复杂度查询精确查找(非范围)

10. 索引失效的常见场景

  • 使用 %xx%xx% 模糊查询
  • 索引字段上使用函数或表达式
  • 字符串字段与数字比较(类型转换)
  • 联合索引不满足最左前缀法则
  • WHERE 子句含 OR 且部分字段无索引

11. 索引优缺点

优点: 提高查询速度

缺点:

  • 占用空间
  • 增删改性能降低
  • 索引维护成本高

12. 索引优化建议

  • 使用前缀索引减小索引项
  • 利用覆盖索引避免回表
  • 自增主键插入效率高
  • 联合索引遵循最左匹配原则
  • 避免函数、类型转换、模糊查询等导致索引失效

13. 事务四大特性 ACID

特性含义实现方式
原子性要么全做,要么全不做undo log
一致性满足数据完整性约束ACID 整体保障
隔离性并发事务互不干扰MVCC / 锁机制
持久性提交的数据永久保存redo log

14. 并发问题与事务隔离级别

问题类型解释出现级别
脏读读到未提交事务的数据读未提交
不可重复读同一事务两次查询结果不同读未提交、读已提交
幻读查询结果数量不一致可重复读以下级别

事务隔离级别:

  • Read Uncommitted
  • Read Committed
  • Repeatable Read(MySQL 默认)
  • Serializable

15. MVCC 实现原理

  • 多版本控制,读取旧版本数据
  • 使用版本链结构控制可见性
  • 非阻塞读,适合高并发

16. 锁的分类

  • 全局锁:如 flush tables with read lock
  • 表级锁:表锁、元数据锁、意向锁
  • 行级锁:记录锁、间隙锁、临键锁(Next-Key Lock)

17. 表锁 vs 行锁

特性表锁行锁
粒度粗,锁住整个表精确,锁住具体记录
并发性
应用场景批量操作、表结构修改单行读写操作

18. MySQL 日志类型

  • redo log:物理日志,持久性保障
  • undo log:回滚用,原子性保障
  • binlog:逻辑日志,备份与主从复制
  • relay log:从库同步日志
  • 慢查询日志:记录慢 SQL

19. Redo Log 的作用

  • 采用 WAL 机制:先记录日志,再写磁盘
  • 顺序写入优化性能
  • 宕机后可用于恢复已提交数据

20. 提升查询性能的方法

  1. 优化 SQL 语句写法
  2. 合理使用索引
  3. 避免索引失效
  4. 使用 EXPLAIN 分析执行计划
  5. 数据分页优化(如延迟加载)
  6. 表结构合理设计
  7. 利用缓存(如 Redis)降低数据库压力

欢迎点赞 + 收藏 + 评论交流!

如果你觉得这篇总结有帮助,别忘了关注我获取更多干货内容~

Read more

Windows从零到一安装KingbaseES数据库及使用ksql工具连接全指南

Windows从零到一安装KingbaseES数据库及使用ksql工具连接全指南

目录 * Windows从零到一安装KingbaseES数据库及使用ksql工具连接全指南 * 前言 * 第一部分:安装前准备 * 1.1 系统要求检查 * 1.2 下载安装包 * 1.3 验证安装包完整性 * 第二部分:安装KingbaseES * 2.1 启动安装程序 * 2.2 接受许可协议 * 2.3 选择授权文件 * 2.4 设置安装目录 * 2.5 选择安装类型 * 2.6 安装预览 * 2.7 安装进度 * 2.8 创建快捷方式 * 2.9 安装完成 * 第三部分:初始化数据库 * 3.1 使用数据库管控工具 * 3.2

By Ne0inhk
超详细VXLAN分布式网关通信原理,看这篇就够了(主页文章还有对应实验)

超详细VXLAN分布式网关通信原理,看这篇就够了(主页文章还有对应实验)

1.BGP EVPN分布式网关通信原理  a.VXLAN隧道建立   同子网互通:    a.CE1和CE2建立BGP EVPN邻居后,会传递EVPN的Type3的路由,Type3路由包含两部分:前缀和PMSI,前缀携带Originator IP(用于告知对端玩的VTEP IP),PMSI会携带Tunnel Identifier也就是VTEP IP和L2 VNI(用于建立VXLAN隧道和该VNI的头端复制列表)   跨子网互通(这李介绍IRB情况):     因为是跨子网并且跨VTEP,所以CE1和CE3上是需要有32位的主机路由(不同的Leaf节点可能连接着相同的网段,所以如果Leaf节点发布的是下属主机IP所在的网段路由,则可能与其他Leaf节点发布的网段路由冲突,进而导致某些Leaf节点的下属主机不可达)   a.PC1首次和CE1通信的时候,CE1会记录PC1的IP地址和MAC地址进入ARP表项,然后载对应网关下配置:arp host collect enable,用于收集租户侧的的主机信息和生成IRB的路由(包含MAC地址,IP地址,L2 VNI,L3 VNI)

By Ne0inhk
Spring Boot 4.0 新特性全解析 + 实操指南

Spring Boot 4.0 新特性全解析 + 实操指南

Spring Boot 4.0 新特性全解析 + 实操指南 作者:技术小栈 | 日期:2026-01-02 引言:Spring Boot 4.0 作为生态内的重大更新,基于 Spring Framework 6.1+ 构建,带来了一系列颠覆性优化——从强制 Java 17+ 适配到原生镜像支持升级,从 HTTP/3 原生集成到 Testcontainers 简化,每一项特性都直指「性能提升」与「开发效率优化」。本文将带你逐个拆解核心新特性,搭配可直接复用的代码示例,手把手教你落地使用,同时附上迁移避坑指南,助你快速升级上手! 一、前置准备:升级 Spring Boot 4.0 必看前提

By Ne0inhk
Monorepo 架构全解析:从概念到落地的完整指南

Monorepo 架构全解析:从概念到落地的完整指南

一、什么是 Monorepo? 1.1 核心概念 Monorepo(单体仓库)是一种软件开发架构模式,它将多个相关项目、应用或模块的源代码集中存储在单一的代码仓库中进行管理。与传统的多仓库(Multi-repo)模式不同,Monorepo 允许团队在一个统一的上下文中开发多个相关组件,从而简化了代码共享和项目间依赖管理。 1.2 与多仓库(Multi-repo)的对比 特性/方面Monorepo(单体仓库)Multi-repo(多仓库)代码组织所有项目代码在一个仓库中每个项目独立仓库代码共享直接通过引用共享代码,无需发布包需要将共享代码发布为npm包才能复用依赖管理统一依赖版本,避免版本冲突各仓库可能使用不同版本的依赖,易出现冲突代码变更跨项目变更可在一次提交中完成需要在多个仓库中进行多次提交和协调构建测试可统一构建、测试所有项目需要单独构建、测试每个仓库存储效率依赖只安装一次,节省空间相同依赖在各仓库中重复安装权限管理较难实现细粒度的权限控制可针对不同仓库设置不同权限初始复杂度配置相对复杂,需要专用工具支持配置简单,容易上手 1.3 适用场景 Monorep

By Ne0inhk