MySQL底层架构

ps:如果这篇帖子对于还在找工作和找实习的你有所帮助,可以关注我,给本贴点赞、评论、收藏并订阅专栏;同时不要吝啬您的花花

MySQL 底层架构采用经典的 C/S 架构分层插件式设计,自上而下分为「连接层 → 服务层 → 存储引擎层 → 存储层」,核心特点是SQL 处理与存储解耦,同时通过内存架构与日志机制保障高性能和数据安全。

一、四层核心架构(自上而下)

连接层

接入与安全

连接器、线程池、协议解析、SSL/TLS、权限校验

建立/维护连接,校验身份,控制并发连接数

服务层

SQL 核心逻辑

解析器、优化器、执行器、事务/锁管理、数据字典

解析 SQL、生成执行计划、权限校验、调度存储引擎

存储引擎层

数据存储与检索

插件式引擎(InnoDB/MyISAM 等)、Handler API

实际读写磁盘、实现索引/事务/锁,与服务层解耦

存储层

物理存储

数据文件、表空间、日志文件(Redo/Undo/Binlog)

落盘数据与日志,支撑恢复与一致性

二、服务层核心流程(SQL 生命周期)

  1. 连接器:TCP 连接建立 → 账号密码校验 → 权限加载 → 线程池管理(wait_timeout 控制空闲超时,默认 8 小时)。
  2. 解析器:词法/语法分析 → 生成抽象语法树(AST)→ 预处理(语义校验、别名解析、权限二次确认)。
  3. 优化器:基于成本模型(server_cost/engine_cost 表)选择最优执行计划(索引选择、Join 顺序、访问路径)。
  4. 执行器:权限最终校验 → 调用存储引擎 API 读写数据 → 结果集返回。

⚠️ 注意:MySQL 8.0 已彻底移除查询缓存,避免因数据更新导致缓存失效的性能开销。

三、存储引擎层(插件式核心)

通过统一 Handler API 与服务层交互,支持多引擎按需选择,核心引擎对比:

InnoDB(默认)

✅ ACID

行级锁+间隙锁

B+ 树聚簇索引

高并发、强一致性(金融/电商核心业务)

MyISAM

表级锁

B+ 树

读多写少、非事务场景(已逐渐被 InnoDB 替代)

Memory

表级锁

哈希/B+ 树

临时表、热数据快速访问(数据存内存)

Archive

行级锁

无索引

海量冷数据归档(仅插入/查询)

四、InnoDB 内存与磁盘架构(性能关键)

1. 内存核心结构

  • Buffer Pool:缓存数据页/索引页,减少磁盘 I/O;通过 LRU 算法管理,支持多实例调优(innodb_buffer_pool_size)。
  • Change Buffer:缓存二级索引更新,合并写入磁盘,提升非唯一索引写性能。
  • Adaptive Hash Index:自动构建哈希索引,加速等值查询(依赖访问模式动态调整)。
  • Log Buffer:缓存 Redo Log 写入,批量落盘,减少同步 I/O。

2. 磁盘核心结构

  • 表空间:InnoDB 数据存储载体,包含系统表空间、独立表空间(ibd)、临时表空间。
  • Redo Log:保证事务持久性(崩溃恢复),循环写,支持组提交提升并发。
  • Undo Log:实现事务隔离(MVCC),存储旧版本数据,用于回滚与快照读。
  • Binlog:服务于复制与恢复,由服务层统一记录(与 InnoDB 协同保证一致性)。

五、核心机制与优化要点

  1. 事务与锁:InnoDB 基于 MVCC 实现隔离级别,行锁+间隙锁解决幻读,通过 两阶段锁(2PL) 保证一致性。
  2. 崩溃恢复:Redo Log 完成数据页重做,Undo Log 完成未提交事务回滚,确保 ACID。
  3. 性能优化方向:调优 Buffer Pool 大小(尽量接近物理内存 50%-70%)。合理设计索引(避免冗余索引,覆盖查询减少回表)。优化 Redo Log 容量与刷盘策略(innodb_log_file_size/innodb_flush_log_at_trx_commit)。控制事务大小与长连接,减少锁等待与资源占用。

六、架构核心优势

  1. 解耦性:SQL 处理与存储分离,可按需替换存储引擎(如 InnoDB 换 MyISAM),不影响上层业务。
  2. 灵活性:支持多协议连接(TCP/IP、Socket)、多客户端工具(JDBC/ODBC/Navicat)。
  3. 可扩展性:通过线程池、多 Buffer Pool、并行复制等机制支撑高并发与大规模数据。

总结

MySQL 底层架构的核心是分层解耦+插件化存储+内存/日志协同。服务层负责 SQL 逻辑,存储引擎层负责数据落地,InnoDB 作为默认引擎通过 Buffer Pool、Redo/Undo Log 等机制实现高性能与高可靠。理解这一架构,是优化 SQL、设计索引、排查性能瓶颈的基础。

ps:如果这篇帖子对于还在找工作和找实习的你有所帮助,可以关注我,给本贴点赞、评论、收藏并订阅专栏;同时不要吝啬您的花花

MySQL基础 文章被收录于专栏

《MySQL基础专栏》专为编程新手打造!从SQL核心语法、数据增删改查,到预编译SQL、索引入门、事务基础,层层拆解MySQL必备知识点。专栏摒弃晦涩术语,以通俗讲解+实操案例,带你掌握数据库基础操作,规避SQL注入、性能低效等常见坑,快速搭建MySQL基础体系,轻松应对日常开发中的数据库基础场景。

全部评论

相关推荐

评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务