大家好,我是风济海。
在日常使用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-
如果觉得本文对你有用
请长按二维码,关注 风济海,顺便点个 在看 吧

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




