MYSQL 六月 15, 2021

MySQL的基本架构

文章字数 1.7k 阅读约需 2 mins. 阅读次数 0

MySQL的基本架构

基本架构图

连接器

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

  • 用户名密码验证
  • 查询权限信息,分配对应的权限
  • show processlist 查看现在的连接
  • wait_time控制维持连接的时长,默认八小时

连接分两种:

  • 长连接:长连接是相对于短连接来说的。长连接指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,需要双方发链路检测包。

    客户端连接–创建socket认证连接–维护连接–数据传输–维护连接–数据传输…..-关闭连接

    在频繁的与数据库服务通信,并且又非高并发的情况下,使用长连接更合适;

  • 短连接:是指通讯双方有数据交互时,就建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送

    客户端连接–创建socket认证连接–维护连接–数据传输–关闭连接

    太多持久连接,大部分是sleep状态的,或者系统是高并发的,使用短连接更合适。

查询缓存

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

一般不用查询缓存,同时在8.0版本已经将此功能删除:

  1. 查询缓存的失效比较频繁,只要表更新,缓存就失效。
  2. 缓存对应新更新的数据命中率比较低。

分析器

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

  • 语法分析: 根据语法规则判断这个sql语句是否满足mysql的语法,如果不符合就会报错

优化器

在具体执行sql之前,要先经过优化器的处理

  • 决定表中使用哪个索引
  • 多表关联时,表的连接顺序

不同的优化方式对sql语句的执行效率有很大的影响

  • RBO:基于规则的优化
  • CBO: 基于成本的优化

执行器

当选择了执行方案后,mysql就准备开始执行了。

  • 执行前会校验该用户有没有权限,如果没有权限,就会返回错误信息,
  • 如果有权限,就会去调用引擎的接口,返回接口执行的结果。
0%