架构

  • 一图流

MySQL 结构 - 图1

数据库连接池

  • 不管是 server 方还是 mysql,都需要维护一个 数据库连接池
  • 这是为了避免反复创建销毁连接

    网络请求和接收

  • server 方通过网络发送要执行的 sql 语句,mysql 会利用一个线程监听网络请求,然后读取解析里面的 sql 语句

sql 接口

  • mysql 的一个组件
  • mysql 中监听网络请求的线程会将解析到的 sql 语句交付给 sql接口
  • sql 接口会将 sql 交付给 查询解析器

查询解析器(parser)

  • mysql 的一个组件
  • 图中的 sql 解析器
  • 按照既定的SQL语法,负责解析 sql 语句的具体含义
  • 然后交付给 查询优化器

**

查询优化器(Optimizer)

  • mysql 的一个组件
  • 会根据 sql 语句生成查询路径树,然后从中选择一条最优的查询路径
  • 然后将这个最优的查询路径作为计划任务交付给 执行器

**

执行器

  • 根据执行计划不停的调用 存储引擎 的各种接口去完成 sql 语句的执行计划

存储引擎

  • 有多种存储引擎,比如 Innodb 等
    • 不同的存储引擎有不同的适用场景
  • 存储引擎是真正执行 sql 语句的,提供进行查询内存缓存数据,更新磁盘数据等操作的接口