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                │
└─────────────────────────────────────┘
                 ↓
┌─────────────────────────────────────┐
│   文件系统:数据文件、日志文件        │
└─────────────────────────────────────┘
相关推荐
桂花很香,旭很美4 小时前
智能体技术架构:从分类、选型到落地
人工智能·架构
qianshang2334 小时前
SQL注入学习总结
网络·数据库·渗透
what丶k4 小时前
深入解析Redis数据持久化:RBD机制原理、实操与生产最佳实践
数据库·redis·缓存
瀚高PG实验室5 小时前
通过数据库日志获取数据库中的慢SQL
数据库·sql·瀚高数据库
Hgfdsaqwr5 小时前
Python在2024年的主要趋势与发展方向
jvm·数据库·python
invicinble5 小时前
对于Mysql深入理解
数据库·mysql
阳光九叶草LXGZXJ6 小时前
达梦数据库-学习-47-DmDrs控制台命令(LSN、启停、装载)
linux·运维·数据库·sql·学习
Hgfdsaqwr6 小时前
掌握Python魔法方法(Magic Methods)
jvm·数据库·python
s1hiyu6 小时前
使用Scrapy框架构建分布式爬虫
jvm·数据库·python
2301_763472466 小时前
使用Seaborn绘制统计图形:更美更简单
jvm·数据库·python