天天看点

MySQL微观结构

MySQL微观结构:用户发起请求到响应的一系列过程

<a href="https://s3.51cto.com/wyfs02/M02/8E/42/wKioL1i6yN2QWdduAALArr839IY802.png" target="_blank"></a>

过程:

1、当用户发起请求,由连接管理器负责接收请求,并由线程管理器为用户创建一个新的线程,来响应用户的请求。

2、然后线程管理器将线程的控制权限转交给用户模块,来验证用的求情是否有相应的访问权限。如果没有,则请求被终止。如果有权限,那么连接就建立了。

3、连接建立之后,用户发起查询语句和命令,由命令分发模块来完成用户所请求的内容是不是缓存模块中直接返回、是否由日志模块记录日志。

如果缓存中没有用户所查询的内容,那么用户的查询语句转交给解析器去解析,生成执行树。并交由底层的对应模块来处理。

4、

如果发起的是select语句,则由优化器来生成更优的执行过程。

如果用户发起的是跟表修改、定义相关的命令(insert、update、delete、create),则由表定义模块来处理请求。

如果用户发起的命令是需要维护、修理一张表,比如做碎片整理,则交给表维护模块来处理。

5、无论用户执行的是什么样的请求,都由状态报告模块来记录。并且最后都会转交给访问控制模块来完成权限检查。如果有权限,则由表管理器来负责后续的处理(如读取表结构、修改表结构、施加表锁等),最后要执行操作都要由存储引擎到对应的表中执行相应的操作。

所以磁盘引擎才是真正的跟磁盘上的数据打交道的接口。

本文转自 曾哥最爱 51CTO博客,原文链接:http://blog.51cto.com/zengestudy/1903264,如需转载请自行联系原作者