MySQL工作流分析

MySQL工作流程图

工作流分析

1、所有的用户链接请求都先发往流程管理器

2、链接管理器

(1)一直处于监听状态

(2)用于监听用户请求

3、线程管理器

(1)因为每个用户请求都需要开一个线程去响应

(2)所以线程管理器通过给用户创造新的线程或重置线程的方式给用户一个响应线程

4、用户模块

(1)对用户的连接请求需要检查权限

(2)用户模块用于验证用户身份和请求(是否有链接MySQL服务器的权限)

(3)若用户请求不通过,则由用户模块负责退回用户请求

(4)若用户请求通过,则使得用户链接

5、命令分发模块

(1)一旦用户具有链接权限,那么用户可以发送一些SQL语句。

(2)命令分发模块负责将不同类型的语句分发到与之对应的解析器上。

6、缓存模块

(1)若用户发送的SQL语句是查询语句,且缓冲中有查询结果的内容。

(2)则命令分发模块和缓存模块交互。

(3)由缓冲模块直接发送这个结果给用户。

7、日志模块

(1)用户发起一个命令(语句)都会记录在日志中。

(2)日志模块的主要功能是记录用户查询。

(3)所以命令分发模块也有可能和日志模块进行交互。

8、解析器

(1)解析查询生成解析数,有解析器判断命令最终属于那种语句。

(2)交由下面的底层模块进行分段解析。

———>8.1优化器

如果解析此命令是select语句,需要交给优化器进行优化。

———>8.2表定义模块

如果是update、insert、delete需要交给表定义模块

———>8.3表维护模块

如果是repeir相关的语句,需要交给表维护模块,表维护模块主要负责修复表中的某些逻辑错误。

———>8.4复制模块

MySQL中的主从服务器同步过程中需要负责模块。

———>8.5状态报告模块

MySQL中的状态变化需要状态报告模块来储存每一个执行过程中的状态信息。

9、访问控制模块

(1)这个命令语句想要真正执行,要需要访问控制模块来验证一下权限。

(2)访问控制模块用来检验用户的操作是否具有足够的操作权限(是否能对表进行更新或删除等操作)

10、表管理器

(1)若有足够的权限,则由表管理器来完成真正的命令操作

(2)表管理器负责创建、读取、修改表定义文件。

11、储存引擎接口和储存引擎

(1)表管理器通过储存引擎接口交给储存引擎(核心):MYISAM/INnoDB

(2)可以把储存引擎比作大脑,之前的所有步骤使之做出的所有准备动作,等大脑发号施令就可以实施动作了

(3)这时才能真正对文件系统中的数据库文件做出修改。

分享:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

😉😐😡😈🙂😯🙁🙄😛😳😮:mrgreen:😆💡😀👿😥😎😕