mysql基础架构

文章目录

 


前言

把 MySQL 拆解一下,看看里面都有哪些“零件”,希望借由这个拆解过程,可以对 MySQL 有更深入的理解

一、MySQL的框架有几个组件, 各是什么作用?

             1.连接器(负责跟客户端建立连接、获取权限、维持和管理连接)

             2.查询缓存(不建议使用缓存,因为只要有更新就会更新缓存。关闭缓存:参数 query_cache_type 设置成 DEMAND。MySQL8.0已移除此模块)

             3.分析器(进行语法分析、词法分析,检查sql的语法顺序等得到解析树, 然后预处理器对解析树进一步分析,验证数据表、字段是否存在,通关之后sql进入下一步优化器)          

             4.优化器(对sql执行计划分析, 得到最终执行计划)

             5.执行器(此处会进行权限验证,验证通过后会调用存储引擎API去执行sql,得到响应结果, 将结果返回给客户端)

             6.存储引擎(负责数据的存储和提取,其架构模式是插件式的。其中InnoDB从MySQL5.5.5 版本开始成为了默认存储引擎)

二、执行器的执行查询语句的流程是什么样的

        1.调用 InnoDB引擎接口取这个表的第一行,判断 ID 值是不是 10(即条件是否满足),如果不是则跳过,如果是则将这行存在结果集中;
        2.调用引擎接口取“下一行”,重复相同的判断逻辑,直到取到这个表的最后一行。
        3.执行器将上述遍历过程中所有满足条件的行组成的记录集作为结果集返回给客户端。

对于有索引的表,执行的逻辑也差不多。第一次调用的是“取满足条件的第一行”这个接口,之后循环取“满足条件的下一行”这个接口,这些接口都是引擎中已经定义好的。


总结

PS:此图来自于极客时间

mysql基础架构