跳到主要内容

MySQL 知识体系概览

什么是 MySQL?

MySQL 是全球最流行的开源关系型数据库管理系统,由 Oracle 公司维护。它使用 SQL(Structured Query Language) 作为查询语言,以表(Table) 的形式组织数据——每一行是一条记录,每一列是一个字段。

MySQL 是互联网企业的"标配数据库"——阿里、美团、字节、腾讯等大厂的核心业务几乎都跑在 MySQL 上。它的优势是:开源免费、性能优秀、生态成熟、社区庞大。


MySQL 的架构

MySQL 采用分层架构:连接层(处理连接和认证)→ SQL 层(解析、优化、执行 SQL)→ 存储引擎层(实际存取数据)。

InnoDB 是 MySQL 5.5 后的默认存储引擎,也是面试中考查最多的引擎。InnoDB 支持事务、行级锁、外键和 MVCC,而 MyISAM 不支持这些特性但查询速度快(适合读多写少的场景)。


核心知识点

索引——查询性能的"加速器"

索引(Index) 就像一本书的目录——没有索引时,查找一条数据需要全表扫描(一页一页翻);有了索引,可以直接定位到目标页。

InnoDB 的索引底层是 B+ 树——多叉平衡树,所有数据存储在叶子节点,叶子节点之间用链表相连,非常适合范围查询和排序。

索引类型说明
聚簇索引索引和数据存在一起(InnoDB 主键索引),一张表只有一个
非聚簇索引索引的叶子节点存的是主键值,查数据需要回表
覆盖索引查询的列都在索引中,不需要回表
联合索引多列组合索引,遵循最左前缀原则
索引失效的常见场景
  • 对索引列使用函数或运算:WHERE YEAR(create_time) = 2024
  • 隐式类型转换:字段是 varchar 但传了 int
  • LIKE 以通配符开头:LIKE '%abc'
  • 联合索引不满足最左前缀:索引 (a, b, c) 但查询只用了 b
  • 使用 OR 且其中某列无索引

事务——数据一致性的"保障"

事务(Transaction) 是一组要么全部成功、要么全部失败的 SQL 操作。事务遵循 ACID 原则:

  • A(Atomicity,原子性):事务中的操作不可分割(undo log 回滚)
  • C(Consistency,一致性):事务执行前后数据库从一个一致状态到另一个一致状态
  • I(Isolation,隔离性):多个事务并发执行互不干扰(MVCC + 锁)
  • D(Durability,持久性):事务提交后数据永久保存(redo log 保证)

MySQL 有 4 种隔离级别:

隔离级别脏读不可重复读幻读
READ UNCOMMITTED✅ 可能✅ 可能✅ 可能
READ COMMITTED❌ 解决✅ 可能✅ 可能
REPEATABLE READ(默认)❌ 解决❌ 解决❌ 大部分解决
SERIALIZABLE❌ 解决❌ 解决❌ 解决

MVCC——无锁化的并发控制

MVCC(Multi-Version Concurrency Control,多版本并发控制) 是 InnoDB 实现"读不加锁"的核心机制。每行数据有隐藏的版本链(通过 undo log 保存历史版本),读操作通过 Read View 判断应该读取哪个版本,从而实现读写不互相阻塞。

锁机制——并发写的"协调者"

锁类型粒度说明
行锁InnoDB 默认,只锁定操作的行
间隙锁行间间隙防止幻读,锁定索引记录之间的间隙
Next-Key Lock行 + 间隙行锁 + 间隙锁的组合,InnoDB 在 RR 级别下默认使用
表锁整张表MyISAM 默认,粒度大但开销小

日志系统——数据安全的"三道保险"

日志作用引擎
redo log崩溃恢复(WAL 预写日志),保证持久性InnoDB
undo log事务回滚 + MVCC 版本链InnoDB
binlog数据归档、主从复制MySQL Server 层

WAL(Write-Ahead Logging):先写日志再写数据页,即使宕机也能通过 redo log 恢复已提交的事务。

SQL 优化——让查询"飞起来"

SQL 优化的核心工具是 EXPLAIN——它展示 MySQL 如何执行一条查询:

EXPLAIN SELECT * FROM user WHERE name = '张三';

关键字段:type(访问类型,const > ref > range > index > ALL)、key(使用的索引)、rows(扫描行数)、Extra(额外信息,如 Using index 表示使用了覆盖索引)。


学习建议

推荐学习路径
  1. MySQL 架构 + 存储引擎 → 理解整体结构
  2. 索引原理 → B+ 树、索引类型、索引失效(面试最高频)
  3. 事务 + 隔离级别 → ACID、四种隔离级别
  4. 锁机制 + MVCC → 并发控制的核心
  5. 日志系统 → redo/undo/binlog
  6. SQL 优化 → EXPLAIN、慢查询、分库分表

相关链接