一、逻辑架构图

学习MySQL如果在脑子里对该数据库系统的各个组件如何协作工作的流程很清晰的话,那么肯定就会深入理解MySQL服务器,学习MySQL是这样,其他事情也是这样。

逻辑架构图模版 逻辑架构图详解_逻辑架构图模版

二、逻辑架构图解释

1.最上层

服务器会事先生成线程池,每个客户端连接服务器都会在服务器的进程中归属于一个线程,客户端只会在自己归属的线程中执行查询操作,服务器会负责缓存线程,不需要为每一个新建的连接创建或销毁线程。并当客户端连接时对客户端进行身份验证,验证是否具有查询的权限。
#线程池:定义一个类似于DHCP地址池的线程池,服务器负责分配和缓存线程。

2.第二层

大多数MySQL的核心服务部分都在第二层,包括查询解析、分析、优化、缓存以及所有的内置函数(数学函数、日期函数等)所有跨存储引擎的功能都在这一层实现(存储过程、触发器、视图等)
查询缓存:当服务器接收到查询请求后会首先查看查询缓存,有则不会执行后续的解析优化执行等操作,直接输出即可,如果在查询缓存中没有找到则会执行整个过程。
解析器:服务器会解析查询,然后再内部创建解析树。
优化器:生成解析树后会对其进行优化,包括重写查询,表的读取顺序和选择合适的索引等,

3.第三层

存储引擎负责数据的提取和存储,每个存储引擎都有不同的功能,服务器通过API与存储引擎通信屏蔽了不同存储引擎之间的差异,存储引擎的API有十几个底层函数,例如开启一个事务等。存储引擎不会解析SQL。不同的存储引擎之间不会相互通信,只是简单相应上层服务器的请求查询操作等。