【Mysql】-- 逻辑架构

逻辑架构图

一条sql语句是如何在mysql的各个功能模块中执行的?
在这里插入图片描述

连接器

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

  1. 验证用户名和密码
  2. 根据用户名和密码认证当前连接所拥有的权限
  3. 连接完成后,若没有后续动作则连接处于空闲状态。

查询缓存

连接建立完成就可以执行sql语句了,此时会先查询缓存,看之前是否执行过这条sql, 之前执行过的sql和结果会以key,value的形式被直接缓存在内存中,key是查询语句,value是查询结果。如果可以命中缓存,将大幅提高查询效率。
但大多数情况下,不建议使用查询缓存,mysql8.0也将查询缓存的功能删掉了。原因是查询缓存的弊大于利,查询缓存的失效十分频繁,只要有对一个表的更新。这个表所有的查询缓存都会被清空,因此当我们费时的将缓存结果存起来,还没来得及使用时就已经被清空掉了。
所以,对于更新压力大的数据库来说,查询缓存命中率会非常低。

分析器

分析器对sql语句做解析,会做词法分析和语法分析,判断表是否存在,列是否存在,sql语句是否正确。如果你的sql语句不对,就会收到错误提示:

ERROR 1064 (42000): You have an error in your SQL syntax;

优化器

经过分析器,mysql知道你要做什么,但是在执行sql之前,需要经过优化器来决定怎么做。
比如我们建了多个索引时,优化器会决定使用哪个索引;有多表关联时,优化器来决定各个表的连接顺序,执行器会去选择方案已达到最优的效率。

执行器

优化器阶段完成之后,sql语句的执行方案就已确定了,然后进入执行器阶段。执行器会根据执行方案来执行语句,先验证权限然后打开表,根据表的引擎定义去使用该引擎提供的接口,最后将处理sql得到的结果集返回给客户端。

mysql机读顺序

在这里插入图片描述
在这里插入图片描述

mysql体系结构

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值