首页 >> 基础教程

MySQL基础架构及执行流程解析

      MySQL 的基础架构是一个分层、模块化的设计,核心目标是高效地处理 SQL 查询和数据存储。其核心架构可以分为以下几个主要层次:

mysql架构.png

1. 连接层 (Client Connectors)

  • 功能:处理客户端连接请求(如 JDBC、ODBC、命令行工具等)。

  • 核心组件

    • 连接池 (Connection Pool):管理客户端连接,复用线程避免频繁创建销毁开销。

    • 身份认证 (Authentication):验证用户名、密码、主机权限。

    • 线程管理 (Thread Management):每个连接分配一个线程处理请求(可通过线程池优化)。

  • 协议支持:TCP/IP、Socket、命名管道等。

2. 服务层 (Server Layer / SQL Layer)

核心大脑,负责 SQL 解析、优化、执行。跨存储引擎,所有引擎共享此层。

  • 管理服务和工具组件 (Management Services & Utilities)

    • 备份恢复、复制、集群管理等后台服务。

  • SQL 接口 (SQL Interface)

    • 接收 SQL 命令(SELECTINSERTUPDATEDELETE 等),返回结果。

  • 解析器 (Parser)

    • 词法分析:拆分 SQL 文本为识别单元(关键字、表名、列名等)。

    • 语法分析:检查 SQL 是否符合语法规则,生成解析树 (Parse Tree)

  • 查询优化器 (Optimizer)

    • 核心组件:基于解析树、统计信息、成本模型,生成最优执行计划(如选择索引、JOIN 顺序)。

    • 优化类型:RBO (基于规则) + CBO (基于成本,主流)。

  • 查询缓存 (Query Cache) (⚠️注意:MySQL 8.0 已移除)

    • 缓存 SELECT 语句及其结果集(Key-Value 形式)。因命中率低、维护开销大,被废弃。

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

负责数据的物理存储和读写。MySQL 采用插件式架构,支持多种引擎。

  • 核心特性

    • 插件式设计:可灵活选择/替换引擎(如 InnoDBMyISAMMemory 等)。

    • 统一接口:服务层通过预定义的 API 与引擎交互,屏蔽底层差异。

  • 常见引擎对比

    特性InnoDB (默认)MyISAMMemory
    事务✅ 支持 ACID❌ 不支持❌ 不支持
    锁粒度行级锁表级锁表级锁
    外键✅ 支持❌ 不支持❌ 不支持
    崩溃恢复✅ 支持 (Redo Log)❌ 不支持❌ 数据丢失
    适用场景高并发事务、OLTP读密集型、静态数据临时表、高速缓存

4. 物理文件层 (File System Layer)

存储引擎将数据最终持久化到磁盘文件。

主要文件类型

    1. 表结构文件 (.frm):存储表定义(MySQL 8.0 后并入系统表空间)。

    2. 数据文件

      1. InnoDB.ibd (独立表空间) 或 ibdata* (系统表空间)。

      2. MyISAM.MYD (数据文件), .MYI (索引文件)。

    3. 日志文件

      1. Redo Log (重做日志)ib_logfile0ib_logfile1 (InnoDB 崩溃恢复用)。

      2. Undo Log (回滚日志):存储旧版本数据(位于系统表空间或独立 undo 表空间)。

      3. Binary Log (Binlog)mysql-bin.00000* (Server 层日志,用于复制/备份)。

      4. Error Log / Slow Query Log:记录错误信息和慢查询。

SQL 执行流程示例 (SELECT * FROM user WHERE id = 10;)

  1. 连接层:客户端建立连接,认证通过。

  2. 服务层

    • 解析器:检查语法,生成解析树。

    • 优化器:选择使用 id 索引还是全表扫描(基于成本)。

    • 执行器:调用存储引擎接口获取数据。

  3. 存储引擎层 (InnoDB)

    • 通过 B+ 树索引查找 id=10 的记录。

    • 若 Buffer Pool 中无数据,从磁盘 .ibd 文件读取。

  4. 返回结果:将结果返回给客户端,并缓存至连接线程的缓冲区。

关键设计思想

  1. 插件式存储引擎:业务可按需选择引擎(事务型选 InnoDB,分析型可考虑列式引擎)。

  2. 逻辑分层:连接管理、SQL 处理、存储分离,提高扩展性。

  3. 写日志优先 (WAL):InnoDB 通过 Redo Log 保证事务持久性和崩溃恢复能力。

  4. 缓冲池优化 (Buffer Pool):减少磁盘 I/O,大幅提升性能。

理解这个架构能帮助你分析 SQL 性能瓶颈(如连接数不足、优化器选错索引、磁盘 I/O 高等),也是学习事务、锁、复制等高级特性的基础。




最新文章
InnoDB 和 MyISAM 主要有什么区别?2025-07-06
mysql存储引擎应该怎么选择?2025-07-06
mysql的几种存储引擎2025-07-06
MySQL 的段区页行2025-07-06
一条更新语句是如何执行的?2025-07-06
mysql中一条查询语句是如何执行的?2025-07-02
MySQL基础架构及执行流程解析2025-07-02
MySQL SQL语法树解析过程详解2025-07-02
mysql中SQL 的隐式数据类型转换?2025-07-01
MySQL 第 3-10 条记录怎么查?2025-06-30
备案号:蜀ICP备2023042032号-1