Skip to main content

体系结构

David LiuAbout 1 min

体系结构

截屏2023-02-25 22.50.47

查询语句执行流程

连接层:连接、授权认证

连接超上限:Too many connections

SHOW VARIABLES LIKE '%max_connections%'; 
set GLOBAL max_connections=500;

服务层

  • SQL 接口
  • 解析器
  • 查询优化器
  • 缓存

引擎层

  • 可插拔存储引擎

    实现:内存、索引和存储管理

存储层

  • 系统文件
  • 文件和日志

如上分类为四层分类,也可以有两层分类的方案。

  • Server 层
    1. 连接层
      1. 连接器
    2. 服务层
      1. 分析器/解析器
      2. 优化器/查询优化器
      3. 执行器
      4. 查询缓存(MySQL8 移除,5.7 就开始建议关闭)
  • 存储引擎层
    • 引擎层
    • 存储层

执行一条 SQL 查询语句,期间发生了什么?

  • 连接器:建立连接,管理连接、校验用户身份;
  • 查询缓存:查询语句如果命中查询缓存则直接返回,否则继续往下执行。MySQL 8.0 已删除该模块;
  • 解析 SQL,通过解析器对 SQL 查询语句进行词法分析、语法分析,然后构建语法树,方便后续模块读取表名、字段、语句类型;
  • 执行 SQL:执行 SQL 共有三个阶段:
    • 预处理阶段:检查表或字段是否存在;将 select * 中的 * 符号扩展为表上的所有列。
    • 优化阶段:基于查询成本的考虑, 选择查询成本最小的执行计划;
    • 执行阶段:根据执行计划执行 SQL 查询语句,从存储引擎读取记录,返回给客户端;