MySql的基本架构,连接器、缓存查询、分析器、优化器、执行器

MySql的基本架构,连接器、缓存查询、分析器、优化器、执行器_第1张图片

 

1、连接器

▪ 连接器负责跟客户端建立连接,获取权限、维持和管理连接。

– 用户名密码验证。

– 查询权限信息,分配对应的权限。

– 可以使用show processlist查看现在的连接。

– 如果太长时间没有动静,就会自动断开,通过wait_timeout控制,默认8小时。

2、查询缓存

▪ 当执行查询语句的时候,会先去查询缓存中查看结果,之前执行过的sql语句及其结果可能以key-value的形式存储在缓存中,如果能找到则直接返回,如果找不到,就继续执行后续的阶段。

▪ 但是,不推荐使用查询缓存:

– 1、查询缓存的失效比较频繁,只要表更新,缓存就会清空。

– 2、缓存对应新更新的数据命中率比较低。

3、分析器

▪ 词法分析:Mysql需要把输入的字符串进行识别每个部分代表什么意思。

– 把字符串T识别成表名T– 把字符串ID识别成列ID 。

▪ 语法分析:根据语法规则判断这个sql语句是否满足mysql的语法,如果不符

合就会报错“You have an error in your SQL synta”。

4、优化器

▪ 在具体执行SQL语句之前,要先经过优化器的处理。

– 当表中有多个索引的时候,决定用哪个索引。

– 当sql语句需要做多表关联的时候,决定表的连接顺序等等。

▪ 不同的执行方式对SQL语句的执行效率影响很大。

– RBO:基于规则的优化。

– CBO:基于成本的优化。

5、执行器

▪ MySQL 通过分析器知道了你要做什么,通过优化器知道了该怎么做,开始进入了执行器阶段,开始执行语句。

– 开始执行的时候,要先校验该用户是否有执行查询的权限,如果没有,就会返回没有权限的错误。如果有权限,就会去调用引擎的接口,返回接口执行的结果。

总结:

连接器主要负责客户端的连接、获取权限、管理连接;

缓存查询主要记录执行的语句和结果,通过key-value形式存储;

分析器主要负责根据语法规范校验sql语句;

优化器主要使用不同的执行方法对sql的索引的使用;

执行器主要是校验用户权限,再根据结果进行调用引擎接口,执行语句,返回结果

你可能感兴趣的:(mysql,架构,缓存)