一、MySQL 分层架构
MYSQL的总体架构可以分为三层,分别是客户端层、服务层、存储引擎层(这里有的人喜欢拆分成两个单独的存储引擎层和文件系统层,但因为它们是相互交互的,各自的存储引擎有不同的交互方式,所以我划分为一层)。
连接层:
主要工作是为了建立与客户端的连接,校验用户的访问权限。
服务层:
这一层由多组件组成,如下图所示。
- SQL Interface(sql接口):用于接受sql并返回处理结果,可以理解为接口的提供者,相当于它提供了一种规范,其它组件只要根据它提供的参数返回约定好的处理结果;
- Parser(语法解析器):根据词法解析和语法解析把sql语句拆分层一个语法树。当mysql没有走缓存的话,就会进入词法分析器。它的作用是分析当前语句是查的操作还是增删改的操作,以及有没有语法错误,以及where,order by,group by等关键字;
- Optimizer(优化器):将解析树进行分析,算出一份或多份执行计划,再根据底层算法选择最优的执行计划(该执行计划不一定是最优计划)。优化器顾名思义就是用来