当前位置:Gxlcms > 数据库问题 > MySQL处理请求的整体结构

MySQL处理请求的整体结构

时间:2021-07-01 10:21:17 帮助过:2人阅读

4:命令分发模块:接收到命令后的预处理

  • 缓存模块:查看命令请求内容是否有缓存

  • 日志模块:记录命令日志

  • 解析器:缓存无相应内容后,传给解析器

5:解析器:解析命令类型,生成解析树,根据类型交付给相应管理模块

  • 优化器:针对select语句进行优化(对命令的执行方式进行优化,得出最佳执行方式)

  • 表修改模块:和表修改相关:如表创建、删除、更新、插入等操作

  • 表维护模块:表修复相关:检查、备份、恢复、优化(碎片整理)解析

  • 复制模块:主从复制相关

  • 状态报告模块:状态信息记录

  • 访问控制模块:对于上面的模块,用户是否有操作权限控制

6:表管理器:用户有相应操作权限后,对表的具体管理

  • 负责创建、读取、修改表结构定义文件

     表结构也是数据,表结构定义文件专门存储表的结构(表大小,有哪些字段等等)和表数据是不同的文件

  • 维护表描述符高速缓冲

     对表进行操作时需先知道库中有没有这张表, 需要将表的名称和定义缓存到内存中,查询时先看看有没有这个文件,再具体的通过存储引擎处理

  • 管理表锁

7:存储引擎:最后处理表和文件间的逻辑关系


用户查询请求过程:

    当用户请求进来,连接管理通过连接管理器接收用户请求,为请求分配线程予以响应,线程通过线程管理器管理,使用线程重用,产生空闲线程,用户经过认证之后,建立安全连接;用户查询时,MySQL服务器在内部开始分析请求,在MySQL进程内部,创建解析树,并进行优化,选出最优执行路径(解析器和优化器作用),最后对一些特定结果做缓存。

优化器一些缺陷

优化器是程序自我智能判定的,可能某些环境下做出的优化并不是最佳的,所以可以手动指定

MySQL是插件式存储引擎,优化器不会考虑存储引擎不同,所以要给优化器提示的原因



本文出自 “Call me Boxin” 博客,请务必保留此出处http://boxinknown.blog.51cto.com/10435935/1676975

MySQL处理请求的整体结构

标签:数据库

人气教程排行