MySQL体系架构 - 简洁版

MySQL分为四层架构,从上到下依次是:


1. 连接层(Connection Layer)

作用:处理客户端连接和权限验证

复制代码
客户端连接 → 连接池 → 权限验证 → 分配线程

关键点:

  • 管理连接池
  • 用户认证、权限校验
  • 线程复用

2. 服务层(Service Layer)- Server层

作用:SQL的核心处理层

包含模块:

  • 查询缓存:缓存SELECT结果(MySQL 8.0已移除)

  • 解析器:词法分析、语法分析,检查SQL是否合法

  • 优化器:选择最优执行计划(用哪个索引、表连接顺序)

  • 执行器:调用存储引擎接口执行SQL

    SQL → 解析器 → 优化器 → 执行器 → 调用引擎


3. 存储引擎层(Storage Engine Layer)

作用:真正负责数据的存储和读取

常见引擎:

  • InnoDB:支持事务、行锁、外键(默认引擎)
  • MyISAM:不支持事务,只有表锁
  • Memory:数据存内存,速度快但不持久化
sql 复制代码
-- 查看引擎
SHOW ENGINES;

-- 创建表时指定
CREATE TABLE users (...) ENGINE=InnoDB;

4. 文件系统层(File System Layer)

作用:持久化存储

包含文件:

  • 数据文件 :.ibd(表数据和索引)
  • 日志文件:redo log、undo log、binlog
  • 配置文件 :my.cnf
  • 错误日志、慢查询日志等

一条SQL的执行流程

以 SELECT * FROM users WHERE id = 1 为例:

复制代码
1. 连接层:验证权限
   ↓
2. 服务层:
   - 解析器:检查SQL语法
   - 优化器:决定使用主键索引
   - 执行器:调用InnoDB接口
   ↓
3. 存储引擎层:
   - InnoDB读取数据页
   - 返回结果给执行器
   ↓
4. 返回客户端

面试回答模板

简洁版(30秒):

MySQL分为四层:连接层 负责连接管理和权限验证;服务层 是核心,包括解析器、优化器、执行器,处理SQL逻辑;存储引擎层 负责数据存储,InnoDB支持事务;文件系统层负责持久化。一条SQL从连接验证→解析优化→执行→引擎读取数据→返回结果。

详细版(1分钟):

MySQL采用分层架构:

  1. 连接层:管理客户端连接池,做权限认证
  2. 服务层 :Server层,是SQL处理的核心
    • 解析器做词法语法分析
    • 优化器选择最优执行计划
    • 执行器调用存储引擎接口
  3. 存储引擎层:可插拔设计,InnoDB是默认引擎,支持事务、行锁、MVCC
  4. 文件系统层:数据最终持久化,包括数据文件、redo log、binlog等

这种分层设计实现了存储引擎可插拔,同一个Server层可以对接不同的引擎。


补充知识点(可能追问)

Q1: 为什么要分层?

A:职责分离,存储引擎可插拔,不同业务场景选择不同引擎

Q2: Server层和引擎层的区别?

A:

  • Server层:处理SQL逻辑,所有引擎共享
  • 引擎层:负责数据存储,不同引擎实现不同

Q3: binlog在哪一层?

A:Server层(所以所有引擎都有binlog)

Q4: redo log在哪一层?

A:存储引擎层(只有InnoDB有redo log)


架构图(文字版)

复制代码
┌─────────────────────────────────────┐
│         客户端(Client)              │
└─────────────────────────────────────┘
                 ↓
┌─────────────────────────────────────┐
│   连接层:连接池、权限验证            │
└─────────────────────────────────────┘
                 ↓
┌─────────────────────────────────────┐
│   服务层(Server层)                 │
│   ┌──────────────────────────────┐  │
│   │ 解析器 → 优化器 → 执行器      │  │
│   └──────────────────────────────┘  │
│   binlog、慢查询日志                │
└─────────────────────────────────────┘
                 ↓
┌─────────────────────────────────────┐
│   存储引擎层(可插拔)                │
│   InnoDB | MyISAM | Memory          │
│   redo log、undo log                │
└─────────────────────────────────────┘
                 ↓
┌─────────────────────────────────────┐
│   文件系统:数据文件、日志文件        │
└─────────────────────────────────────┘
相关推荐
天空属于哈夫克34 天前
企业微信二次开发:精准实现关键词自动回复
架构·企业微信
小白男神4 天前
MySQL进阶学习四(存储过程、游标、触发器)
mysql
晨米酱4 天前
AGENTS.md:Agent 的上下文策略层
面试·架构·agent
这个DBA有点耶4 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G4 天前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
自由能燃气设备4 天前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远4 天前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
码流子4 天前
高速公路安全监测实践:碰撞监测预警+物联网底座,从感知到处置的闭环
大数据·人工智能·物联网·算法·架构
kybs19914 天前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net
moMo4 天前
从固定流程到问题路由:让 LangGraph RAG 按需检索
架构