Skip to content

MySQL

索引

B+ 树

  • InnoDB 默认的索引结构
  • 所有数据存储在叶子节点,通过双向链表连接
  • 非叶子节点仅存储键值用于路由

索引类型

  • 主键索引(聚簇索引)
  • 二级索引(非聚簇索引)
  • 联合索引(最左前缀原则)
  • 覆盖索引(索引包含所有查询列)

EXPLAIN

关键字段:

字段含义
type访问类型(ALL < index < range < ref < eq_ref < const)
key实际使用的索引
rows预估扫描行数
ExtraUsing index 表示命中覆盖索引

事务

ACID

  • Atomicity 原子性:undo log
  • Consistency 一致性:应用层保证
  • Isolation 隔离性:MVCC + 锁
  • Durability 持久性:redo log

隔离级别

级别脏读不可重复读幻读
READ UNCOMMITTED
READ COMMITTED
REPEATABLE READ部分*
SERIALIZABLE

*InnoDB 在 RR 级别下使用 Next-Key Lock 防止幻读。

MVCC

  • 每行数据包含隐藏列:DB_TRX_IDDB_ROLL_PTR
  • Undo log 形成版本链
  • Read View 决定版本的可见性

实战项目: MySQL 相关知识点(表设计、复合索引、覆盖索引、逻辑删除、事务、读写分离、EXPLAIN)已在 Ecommerce Microservices 项目中落地实现。

基于 VitePress 构建