Skip to main content
☘️ Septvean's Documents
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

MySQL 核心概念

一、MySQL 整体架构(最核心)

1️⃣ MySQL 是什么?

  • 关系型数据库(RDBMS)
  • 基于 Client / Server 架构
  • SQL 是交互语言
  • 存储引擎可插拔

2️⃣ MySQL 逻辑架构(必考)

Client
连接层(Connection)
SQL 层(Parser / Optimizer / Executor)
存储引擎层(InnoDB / Memory / MyISAM)
磁盘(Data / Redo / Binlog)

各层职责一句话:

作用
连接层 管理连接、线程、认证
SQL 层 解析 SQL、生成执行计划
引擎层 数据存储、事务、锁
磁盘层 持久化、日志

二、存储引擎(InnoDB 是绝对核心)

1️⃣ InnoDB 的核心特性

特性 说明
事务 支持 ACID
行级锁 高并发
MVCC 非阻塞读
崩溃恢复 Redo / Undo
聚簇索引 主键即数据

👉 MySQL 8.4 默认 & 唯一主流引擎

2️⃣ InnoDB vs MyISAM

对比 InnoDB MyISAM
事务
行锁 表锁
崩溃恢复
外键
COUNT(*)

三、事务(ACID + 实现原理)

1️⃣ ACID 含义

字母 含义
A 原子性
C 一致性
I 隔离性
D 持久性

2️⃣ 事务靠什么实现?

特性 实现机制
原子性 Undo Log
一致性 程序 + 约束
隔离性 锁 + MVCC
持久性 Redo Log

3️⃣ 事务隔离级别(必背)

隔离级别 脏读 不可重复读 幻读
READ UNCOMMITTED
READ COMMITTED
REPEATABLE READ(默认) ❌*
SERIALIZABLE

InnoDB 使用 Next-Key Lock 解决幻读

四、锁机制(并发的核心)

1️⃣ 锁的粒度

  • 表锁
  • 行锁(Record Lock)
  • 间隙锁(Gap Lock)
  • Next-Key Lock

2️⃣ 常见锁类型

场景
S 锁 共享读
X 锁 排他写
意向锁 提高判断效率

3️⃣ 锁升级 / 锁扩大(危险点)

  • 未走索引 -> 行锁变表锁
  • 范围查询 -> Next-Key Lock

五、MVCC(高并发读的关键)

1️⃣ MVCC 是什么?

多版本并发控制,让读不阻塞写,写不阻塞读

2️⃣ MVCC 依赖哪些结构?

组件 作用
Undo Log 保存历史版本
Read View 事务可见性
trx_id 事务 ID

3️⃣ 快照读 vs 当前读

类型 示例
快照读 SELECT
当前读 SELECT … FOR UPDATE

六、索引(性能核心)

1️⃣ 索引的本质

排序好的数据结构(B+Tree)

2️⃣ 索引分类

  • 主键索引(聚簇)
  • 二级索引
  • 唯一索引
  • 联合索引
  • 覆盖索引

3️⃣ B+Tree 特点

  • 矮胖结构
  • 顺序 IO
  • 范围查询高效

4️⃣ 索引失效常见原因

  • 最左前缀失效
  • 函数 / 隐式转换
  • %like
  • OR

七、SQL 执行流程(非常重要)

SELECT * FROM user WHERE id = 10;

执行流程:

  1. 连接验证
  2. SQL 解析
  3. 生成执行计划
  4. 权限检查
  5. 执行器调用引擎
  6. 读取数据
  7. 返回结果

八、日志系统(稳定性的根基)

1️⃣ Redo Log(物理日志)

  • 保证 崩溃恢复
  • WAL 机制
  • 顺序写

2️⃣ Undo Log(逻辑日志)

  • 回滚
  • MVCC

3️⃣ Binlog(逻辑日志)

  • 主从复制
  • PITR
  • 全库级别

4️⃣ Redo vs Binlog

对比 Redo Binlog
层级 引擎 Server
粒度 逻辑
作用 崩溃恢复 复制 / 恢复

九、主从复制(高可用基础)

1️⃣ 原理

主库写 -> Binlog
从库 IO 线程拉取
SQL 线程回放

2️⃣ 常见问题

  • 主从延迟
  • 数据不一致
  • 大事务阻塞

十、MySQL 高可用方案(认知即可)

  • 主从复制
  • 半同步复制
  • MGR(Group Replication)
  • InnoDB Cluster
  • ProxySQL / Keepalived

十一、运维视角的核心指标

指标 意义
QPS 吞吐
TPS 事务
Threads_running 并发
Buffer Pool Hit 内存命中
IO Util 磁盘压力

十二、总结

MySQL = SQL 层负责“算”,InnoDB 负责“存”, 事务靠日志,性能靠索引,并发靠锁和 MVCC, 稳定靠复制和备份。