Carry の Blog Carry の Blog
首页
  • Nginx
  • Prometheus
  • Iptables
  • Systemd
  • Firewalld
  • Docker
  • Sshd
  • DBA工作笔记
  • MySQL
  • Redis
  • TiDB
  • Elasticsearch
  • Python
  • Shell
  • MySQL8-SOP手册
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Carry の Blog

好记性不如烂键盘
首页
  • Nginx
  • Prometheus
  • Iptables
  • Systemd
  • Firewalld
  • Docker
  • Sshd
  • DBA工作笔记
  • MySQL
  • Redis
  • TiDB
  • Elasticsearch
  • Python
  • Shell
  • MySQL8-SOP手册
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • MySQL8-SOP

  • MySQL实战45讲学习笔记

    • MySQL45讲学习笔记
    • MySQL基础架构
      • 1. MySQL 逻辑架构
      • 2. 主要组件功能
      • 3. 总结
    • MySQL日志系统 (Redo Log 与 Binlog)
    • MySQL字符串字段索引优化
    • MySQL索引原理与优化
    • MySQL锁机制详解
    • MySQL事务与MVCC机制
    • MySQL普通索引与唯一索引的选择
    • MySQL优化器如何选择索引
    • MySQL抖动刷脏页
    • 表空间管理与回收
    • count函数详解
    • 日志索引
    • orderby工作原理
    • 随机排序实现
    • SQL性能差异函数与转换
    • 慢查询分析锁与版本
    • 幻读与间隙锁
    • 加锁规则分析
    • 应急性能优化方法
    • 数据持久化保证
    • 主备一致性原理
    • 高可用架构与切换
    • 备库延迟分析与优化
    • 主备切换GTID
    • 读写分离实践与问题
    • 数据库健康检查
    • 锁与死锁
    • 数据误删恢复
    • Kill命令详解
    • 查询与内存使用分析
    • Join原理与选择
    • 临时表原理与应用
    • 内部临时表详解
    • Memory引擎详解
    • 自增ID详解
    • Insert加锁分析
    • 表复制方法比较
    • Grant与权限管理
    • 分区表详解
    • SQL语句中的Join问题
    • 自增ID用尽问题
  • 专题系列
  • MySQL实战45讲学习笔记
Carry の Blog
2024-07-27
目录

MySQL基础架构

# MySQL 基础架构

理解 MySQL 的基础架构有助于我们了解一条 SQL 查询语句是如何执行的。

# 1. MySQL 逻辑架构

SQL 语句在 MySQL 各个功能模块中的执行过程如下图所示:

MySQL逻辑架构图

大体来说,MySQL 可以分为 Server 层和存储引擎层两部分:

  • Server 层:
    • 包括连接器、查询缓存(MySQL 8.0 已移除)、分析器、优化器、执行器等。
    • 涵盖了 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等)。
    • 所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。
  • 存储引擎层:
    • 负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。
    • 现在最常用的存储引擎是 InnoDB,它从 MySQL 5.5.5 版本开始成为了默认存储引擎。
    • 我们执行 CREATE TABLE 建表的时候,可以通过 ENGINE=MyISAM 指定使用的存储引擎,不指定则使用默认引擎 InnoDB。

# 2. 主要组件功能

  • 连接器: 负责跟客户端建立连接、获取权限、维持和管理连接。
  • 查询缓存: (MySQL 8.0 已移除) 之前用于缓存查询结果,key 是查询语句,value 是查询结果。由于缓存失效非常频繁(只要表有更新,缓存即清空),命中率不高,因此在 8.0 版本被移除。
  • 分析器: 对 SQL 语句进行词法分析和语法分析,判断 SQL 语句是否正确。
  • 优化器: 在 SQL 语句执行前,决定使用哪个索引、表的连接顺序等,生成最优的执行计划。
  • 执行器: 根据优化器生成的执行计划,调用存储引擎的接口来执行 SQL 语句,返回结果。

# 3. 总结

一条查询语句的执行流程大致是:客户端通过连接器连接到 MySQL 服务器;如果查询缓存开启(8.0 前),先查询缓存;若未命中,则通过分析器进行语法分析;然后优化器生成执行计划;最后执行器调用存储引擎接口执行查询并返回结果。

#MySQL#基础架构#学习笔记
上次更新: 6/21/2025

← MySQL45讲学习笔记 MySQL日志系统 (Redo Log 与 Binlog)→

最近更新
01
表空间管理与回收
06-21
02
MySQL抖动刷脏页
06-21
03
count函数详解
06-21
更多文章>
Theme by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式