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

相关推荐
gyx_这个杀手不太冷静11 小时前
大人工智能时代下前端界面全新开发模式的思考(二)
前端·架构·ai编程
羊小蜜.12 小时前
Mysql 13: 触发器全解——创建、查看、使用与注意事项
数据库·mysql·触发器
不是书本的小明12 小时前
阿里云专有云网络架构
网络·阿里云·架构
ShiJiuD66688899912 小时前
Mysql 进阶
数据库·mysql
l1o3v1e4ding12 小时前
排查linux CentOS7.6的mysql磁盘 I/O 延迟过高问题
linux·运维·mysql
Dream of maid14 小时前
Mysql(3)运算符
数据库·mysql·adb
絆人心14 小时前
Windows 下 MySQL sys 数据库误删恢复教程(mysql_upgrade 已废弃,新版适用)
mysql·数据库误删恢复·sys数据库恢复·mysql_upgrade
Reart15 小时前
从0解构tinyWeb项目--(Day:2)
javascript·后端·架构
提子拌饭13315 小时前
生命组学架构下的细胞分化与基因突变生存模拟器:基于鸿蒙Flutter的情景树渲染与状态溢出防御
flutter·华为·架构·开源·harmonyos
code_pgf16 小时前
Mamba-2 / Jamba / DeepSeek-V2 高效架构
架构·transformer