MySQL逻辑架构设计
通常MySQL架构有两种划分,一种划为两层架构,另一种划为三层。
两层架构划为MySQL服务器层和存储引擎层,三层架构则把MySQL层又划为两层。
三层架构说明
第一层,用于连接处理、授权认证、安全认证等等。大多数基于客户端/服务器端的工具或者服务器都有类似架构。
第二层,是MySQL架构的核心部分。MySQL的大部分核心服务功能大都在这一层。包括查询解析、分析、优化、缓存以及所有的内置函数的实现,还有所有的跨存储引擎的功能都在这一层实现:存储过程、触发器、试图等。
第三层,存储引擎层。存储引擎负责MySQL中数据的存储和读取。每个存储引擎都有自己的优势和劣势。MySQL服务器层通过API与存储引擎进行通信。存储引擎本身是不会解析SQL,且不同的存储引擎之间也是不会相互通信。
MySQL服务器接收/处理一个查询请求的过程
当MySQL服务器接收到一个查询请求,首先会对当前的连接请求进行认证,认证其用户名和密码信息。
连接成功之后,会继续验证该连接是否具有执行某个特定查询的权限。
所有的验证都通过,如果是 select 操作,MySQL会先检查查询缓存中是否存在该缓存,如果存在直接返回结果。不存在继续下一步。
解析查询,并创建内部数据结构(生成 解析树),然后对解析树进行各种优化(包括,重写查询,决定表的读取顺序、选择合适的索引等等)。
通过存储引擎存储或者提取结果。
如果是select操作,生成查询缓存。
返回结果。
over~