时间: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处理请求的整体结构
标签:数据库