MySQL学习笔记-基础架构

理解MySQL各组件之间如何协调工作,有助于深入理解MySQL服务器,下面展示了MySQL的基本架构图

图1-1:MySQL逻辑架构

图1-1:Mysql服务器逻辑结构图

第二层架构包含了大多数MySQL的核心服务功能,包括连接器、查询缓存、分析器、优化器、执行器等,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。

第三层包含了存储引擎。存储引擎负责MySQL中的数据存储和读取,每个存储引擎都有它的优势和劣势。服务器通过API与存储引擎进行通信。

依次看下每个组件的作用:

1.连接器

当客户端连接到MySQL服务器时,服务器对其进行认证。认证基于用户名、原始主机信息和密码。认证通过后服务器会继续验证客户端拥有的权限。之后,这个连接里面的权限判断逻辑,都将依赖于此时读到的权限。

2.优化与执行

2.1查询缓存

对于select语句,在解析查询之前,服务器会先检查查询缓存。如果能在其中找到对应的查询,服务器直接返回查询缓存中的结果集。

需要注意的是,MySQL 8.0开始没有这个功能了。

2.2查询解析

如果没有命中查询缓存,MySQL会解析查询,并创建内部数据结构(解析树)。

解析器先会做“词法解析”。对一条SQL语句,MySQL需要识别出里面的字符串分别是什么,代表什么。

做完了这些识别以后,就要做“语法解析”。根据词法解析的结果,语法解析器会根据语法规则,判断输入的这个SQL语句是否满足MySQL语法。

2.3优化

经过了解析器,MySQL就知道你要做什么了。在开始执行之前,还要先经过优化器的处理。

如表的读取顺序,重写查询,选择合适对索引等。

2.4执行

MySQL通过分析器知道了你要做什么,通过优化器知道了该怎么做,于是就进入了执行器阶段,开始执行语句。

开始执行的时候,要先判断一下你对这个表有没有执行查询的权限,如果没有,就会返回没有权限的错误

如果有权限,就打开表继续执行。打开表的时候,执行器就会根据表的引擎定义,去使用这个引擎提供的接口。

你可能感兴趣的:(MySQL学习笔记-基础架构)