- MySQL 驱动
- MySQL 驱动会在底层跟数据库建立网络连接,有了网络连接,才能去发送请求给数据库服务器执行各种 SQL 语句;
- 应用系统的数据库连接池
- 系统通常都是多线程并发处理请求,数据库连接池可以维持多个数据库连接,让多线程使用里面的不同数据库连接去执行 SQL 语句,避免了数据库连接使用完之后就销毁的问题;
- MySQL 的数据库的连接池
- MySQL 架构体系中的第一个环节,就是连接池;
- 连接池维护了与系统之间的多个数据库连接;
- 监听网络连接的 MySQL 内部工作线程
- MySQL 分配一个线程去处理连接池中的某个连接;
- 这个线程负责从这个连接中去监听网络请求,以及读取请求数据,比如从网络连接中读取和解析出来一条我们的应用系统发送过去的 SQL 语句;
- SQL 接口
- 负责处理接收到的 SQL 语句;
- 它是一套执行 SQL 语句的接口,MySQL 内部组件,专门用于接收工作线程从网络连接中读取的那些增删改查的 SQL 语句;
- 查询解析器 Parser
- 让 MySQL 能看懂 SQL 语句;
- Parser 按照既定的 SQL 语法,对我们按照 SQL 语法规则编写的 SQL 语句进行解析,然后让 MySQL 理解这个 SQL 语句要干什么事情;
- 例如,select id,name,age from users where id=1,解析后 MySQL 可以理解为以下几部分:
- 要从 users 表里查询数据;
- 查询 id 字段的值等于1的那行数据;
- 对查出来的那行数据要提取里面的 id,name,age 三个字段;
- 查询优化器
- 选择最优的查询路径
- 查询优化器,会针对你编写的复杂 SQL 生成查询路径树,然后从里面选择一条最优的查询路径出来,按照一个什么样的步骤和顺序,去执行哪些操作;
- 执行器
- 根据执行计划调用存储引擎的接口;
- 执行器,会去根据我们的优化器生成的一套执行计划,然后不停的调用存储引擎的各种接口去完成 SQL 语句的执行计划,大致就是不停的更新或者提取一些数据出来
- 存储引擎
- 调用存储引擎接口,真正执行 SQL 语句;
- 存储引擎,负责具体的 SQL 语句逻辑的执行,会按照一定的步骤去执行查询内存缓存数据,更新磁盘数据,查询磁盘数据等等一系列的操作;