Mysql 宏观架构

从宏观的角度去看mysql的大体架构的话可以看出是分为两层,一个是server层另一个是存储引擎层。

server:
  1. 连接器:负责管理连接的管理客户端与服务端的连接。进行验证、获取账号权限等。mysql使用的是tcp协议进行传输数据的。所以会存在长时间如果不用连接会出现资源浪费的情况,所以肯定是可以设置空闲时间,如果是超过空闲时间将会断开,释放资源等等。其实连接器主要还是负责与外部建立了连接。(ps:就像你要进我家门,我要知道你是谁,我才会开门让你放行,当然也有驱逐你的权利。可以这么理解)。

  2. 缓存查询:这个就比较好理解一些,就像我们的业务进行查询数据的时候,如果缓存中有那就在缓存中取(以key-value形式存储。key为sql,value为值),没有就往下继续找。但是会有一些问题,如果数据更新比较频繁的话,那缓存就没用了,感觉没啥必要。

  3. 解析器:

    • 词法分析:根据你输入的sql语句根据及解析器识别出关键字
    • 语法分析:会根据语法解析器的规则去分析当前sql的语法是否正确(比如from和form)如果语法报错就直接报错了。
  4. sql执行流程(开始执行sql)

    • 预处理器:检查当前sql的表、字段是否存在。将select * 扩展到所有表。进行预处理(prepare)阶段
    • 优化器:这里就是要进行当前sql要使用哪种方案进行执行,就是根据计算成本(查询成本)来决定使用哪个索引。
    • 执行器:确定好查询方案之后,然后执行sql,与存储引擎进行交互。
存储引擎层:

这里负责的是数据(读取与写入)存储方面的后续详细讲讲。

总结:

我的理解为:从宏观的角度去看mysql的整体架构。首先是server层开始。首先是连接器,主要负责管理连接,验证,鉴权。然后看当前sql如果是查询将会先走到缓存这里进行获取数据(mysql8.0已经没有缓存了)。在到解析器这里,先进行词法分析,识别出关键字,然后进行语法分析,判断当前是否出现语法错误生成语法树。最后到sql执行阶段,预处理器:会先进行sql判断当前表字段是否存在,然后将sql完全展开;以上都没有问题之后将会走到优化器,这里优化器会根据计算成本去选用合适的执行方案,就是会去选择成本较低的索引作为执行方案;执行器:这里就是执行sql,根据优化器提供的方案执行sql与引擎交互,调用存储引擎接口获取数据。最后到存储引擎层,这里主要负责数据的读取和写入。

相关推荐
2601_9577867725 分钟前
多平台矩阵系统的反脆弱架构:如何用技术解耦对抗平台规则的不确定性
人工智能·矩阵·架构·平台解耦
还是鼠鼠38 分钟前
AI掘金头条新闻系统 (Toutiao News)-相关推荐
后端·python·mysql·fastapi·web
添砖java‘’42 分钟前
MySQL复合查询
数据库·mysql
ElevenS_it1881 小时前
MySQL慢查询监控与告警实战:从slow_log采集到分钟级定位慢SQL的完整链路配置
android·sql·mysql
My_Java_Life1 小时前
SpringAI基于Mysql jdbc方式存储对话记忆
mysql·ai
虎冯河1 小时前
Nano Banana Pro生图逻辑详解—— 从底层架构到实践指南
架构·aigc
清平乐的技术专栏1 小时前
一文读懂Kafka中的“消费”(对标MySQL数据库)
数据库·mysql·kafka
啷里格啷1 小时前
第三章 Fast-DDS核心源码导读与流程拆解-Discovery机制
后端·架构
什么半岛铁盒2 小时前
LangChain 入门与架构:快速搭建你的第一个 AI 应用
人工智能·架构·langchain
mirror_zAI2 小时前
C++ 仿 QQ 聊天室项目:Qt 客户端 + epoll 服务端 + Reactor 架构(含源码)
c++·qt·架构