暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL的架构

风济海 2021-07-28
312

大家好,我是风济海。


在日常使用Java开发的过程中,我们会不可避免的使用客户端工具或者JDBC API或者ORM框架操作MySQL,但是当我们的客户端工具或者程序连接到MySQL后,它的内部是怎么工作的?如果想深入理解MySQL数据库,那就需要先了解MySQL的架构。


01

MySQL的发展历史


首先,我们先了解一下MySQL的发展历史,如下图:


02


MySQL的体系结构


MySQL的体系结构图如下:


  • 客户端连接器(Connectors):用来支持各种语言和MySQL 的交互,比如:我们常用的Java 中的JDBC

  • 连接池(Connection Pool):负责连接管理、授权认证、安全等等

  • 管理服务和工具(Management Serveices & Utilities):负责MySQL服务端的管理,包括备份恢复、复制、集群、配置迁移、元数据等等

  • SQL接口(SQL Interface):负责处理DML、DDL、存储过程、视图、触发器等操作,并返回结果

  • 解析器(Parser):负责验证和解析 SQL 语句

  • 优化器(Optimizer):负责优化SQL

  • 查询缓存(Cache and Buffer):比如表缓存,Key 缓存,权限缓存等

  • 插件式存储引擎Pluggable Storage Engines),提供api给服务层使用,负责 MySQL 中数据的存储和提取

  • 系统文件存储(File System):负责将数据库的数据和日志存储在系统的文件中



03


MySQL的逻辑架构


由上面可知,MySQL 由连接池、SQL 接口、解析器、优化器、缓存、存储引擎等组件组成。逻辑上我们可以把MySQL分为三层,即连接层、服务层、存储引擎层。如下图:

连接层:负责授权认证和管理那些与MySQL服务端建立的连接。


服务层:负责查询缓存的判断、对SQL语句进行解析、优化、执行,内建函数、存储过程、触发器、视图也都是在这一层实现的。


存储引擎层:该层是比较关键的一层,负责MySQL中数据的存储和提取。


总结:MySQL的一个比较重要的特点是插件式的存储引擎架构,它提供了一系列标准的管理和服务支持,通过标准的API与存储引擎进行交互,屏蔽了不同存储引擎之间的差异。


聊完了MySQL的架构,后续会聊聊一条查询SQL是如何执行的,敬请期待~



-END-


如果觉得本文对你有用

请长按二维码,关注 风济海,顺便点个 在看 

转发至 朋友圈,是对我最大的支持


文章转载自风济海,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论