mysql的逻辑架构图如下:
mysql架构图
如上图所示,mysql结构分为三部分,从上到下分别是客户端层,请求处理层,存储引擎层.
客户端层
客户端层的主要功能是接收用户请求,并进行账户/权限验证的操作,这个是同大多数客户端/服务器模型的数据库一样的.
请求处理层
此层会对具体的sql语句进行处理和优化.此层分为四个部分,分别如下:
-
连接线程处理
mysql采用的是线程池的方式处理请求,在启动的时候,会创建若干的线程,然后每个客户端在连接数据库的时都会为其分配一个线程来处理请求,这样处理完成后线程也不会被销毁,而是直接进入线程池. -
查询缓存
对于select查询语句,在进行语句解析前会先去缓存池查询是否有对应的缓存,如果有就直接返回缓存结果集,否则将进行下一步,对语句进行解析优化. -
解析器
mysql会解析查询,并创建内部的数据结构(解析树),然后再将解析结果进行各种优化. -
优化器
经过解析器的结果会在此层进行优化操作,优化包括重写查询,决定表的读取顺序, 选择合适的索引等.用户可以通过特殊的关键字,如hint
来影响它的决策过程,explain
来使优化器解释优化的过程.
网友评论