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与引擎交互,调用存储引擎接口获取数据。最后到存储引擎层,这里主要负责数据的读取和写入。

相关推荐
清静诗意7 分钟前
Ubuntu 系统下 MySQL 8.0 安装与远程访问完整教程
mysql·ubuntu·adb
勤源科技6 小时前
全链路智能运维中的实时流处理架构与状态管理技术
运维·架构
-雷阵雨-7 小时前
MySQL——桥梁JDBC
数据库·mysql·oracle
失散137 小时前
分布式专题——43 ElasticSearch概述
java·分布式·elasticsearch·架构
JanelSirry9 小时前
MySQL分区表(PARTITION):水平分表示例 (基于用户ID哈希分表)不依赖第三方中间件
mysql·中间件·哈希算法
李白你好9 小时前
一款专业的多数据库安全评估工具,支持 **PostgreSQL、MySQL、Redis、MSSQL** 等多种数据库的后渗透操作
数据库·mysql·postgresql
mit6.8249 小时前
[Backstage] 后端插件 | 包架构 | 独立微服务 | by HTTP路由
架构
恋红尘9 小时前
Mysql
数据库·mysql
周杰伦_Jay10 小时前
【RocketMQ全面解析】架构原理、消费类型、性能优化、环境搭建
性能优化·架构·rocketmq
没有bug.的程序员12 小时前
服务治理与 API 网关:微服务流量管理的艺术
java·分布式·微服务·架构·wpf