MYSQL查询SQL执行流程

MySQL粗略划分分为哪几部分?

MySQL 可以分为 Server 层和存储引擎层两部分,结构如下:

Server 层:包含了MYSQL的主要核心功能,包括建立连接、分析sql、优化sql、执行sql,以及各类函数。

存储引擎层:负责存储数据,提供读写接口。

Server 层每个部分的组件和职责是什么?

连接器:客户端连接到数据库
分析器:词法分析,语法分析
优化器:执行计划生成,索引选择
执行器:操作引擎,返回结果
存储引擎:存储数据,提供读写接口

Server 层中还包含一个“查询缓存”,但是其使用效率是很低的,也就是缓存失效非常频繁,因为前一次查询的数据缓存后,一旦缓存相关的表被更新,缓存则失效,对于一个更新频繁的表使用缓存,效果反而时而其反。查询缓存使用场景就是静态数据,例如更新不频繁的字典数据。

一个查询SQL的执行流程如下:

	|-------------------------------------------|
	|	连接器 -->客户端连接到数据库	    |
	|	↓				    |					 
        |                                           |
	|	分析器 -->词法分析,语法分析          |
	|	↓				    |				 
        |                                           |
	|	优化器 -->执行计划生成,索引选择	    |
	|	↓				    |				 
        |                                           |
	|	执行器 -->操作引擎,返回结果	    |
	|-------------------------------------------|