最近工作方面比较忙,所以很久没有更新一些文章。

本篇一起来看看MySql的体系结构

对于MySQL体系结构来说,官方文档中有一张体系结构图。

如下????

Mysql的体系结构概览_Mysql

咋一看很难,其实仔细分析和我们常规的web开发中的三层架构体系是非常类似的!

  • 先来简单回顾下我们的Web开发的流程
浏览器发送一个请求-->Controller层-->Service层-->Dao层-->交互数据库

这是我们标准的一个web请求的大体流程。

  • 那我们再一起看一下Mysql的内部流程
Connectors 连接层

最上层的这一层是一些客户端和链接服务,包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于 TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。

通俗讲解:对于最上层的东西我们至少是认识JDBC的,我们的程序中可以通过JDBC操作Mysql所以说图中最上面一层就是MySQL连接的客户端通俗讲解:对于最上层的东西我们至少是认识JDBC的,我们的程序中可以通过JDBC操作Mysql所以说图中最上面一层就是MySQL连接的客户端

MySQLServer 服务端

第一层:连接层

  • Connection Pool : 连接池组件

对于 MySQLServer 服务端来说最上面的ConnectionPool其实就是连接池,连接池中又有很多组件,对于MySQL客户端发出一个请求后到达MySQL的服务端,先去连接池中获取一个请求。 当然在连接之前要获取一些认证,最大连接数,等相关请求!

第二层:服务层

Mysql的体系结构概览_Mysql_02

  • Management Services & Utilities : 管理服务和工具组件

在这一层的Management Services组件中我们可以对数据进行一些处理,类似于数据的备份、安全、系统配置的一些相关东西。

  • SQL Interface : SQL接口组件

接着是SQL Interface组件,在这里我们可以粉装或者自定义一些DML、DDL、存储过程、存储函数等一些操作。

  • Parser : 查询分析器组件

这就是一个解析器,解析的东西就是客户端发送过来的Sql语句,在这里进行解析和相关的过滤操作

  • Optimizer : 优化器组件

在解析完成之后,在MySQL的内部还有一个过程,就是优化器。优化器会更具内部的优化过程对SQL语句进行优化

  • Caches & Buffers : 缓冲池组件

在解析完成之后会查询这里的缓存,试着获取有没有这些数据的缓存,有的话直接响应回去。

第三层:引擎层

Pluggable Storage Engines : 存储引擎

Pluggable是插件的意思。 说明MySQL的存储引擎是插件式的存储引擎。

Mysql的体系结构概览_Mysql_03

对于这一层来说可能很多人熟悉的是 InnoDB 因为从MySQL5.5版本之后默认使用的是InnoDB的引擎。

通俗讲解:对于引擎来说可以理解为飞机引擎,在我们的民用航空中我们使用的是客机的引擎,军事战斗机使用的是战机引擎 等 不同的飞机有不同的引擎,不同的引擎都要不同的作用。这里的MySQL也是如此。所以我们操作的时候想明白我们的用途是什么,说明存储引擎更合适。

第四层:存储层

File System : 文件系统

我们在操作MySQL的时候不管是插入、修改、删除 数据 最终操作的其实就是这个文件系统当中的文件,在此操作中还有纪录表结构信息、二进制信息、索引信息、错误日志、慢查询信息等。


以上就是MySQL体系结构中的四层,对此我们来进行一个简单的总结:

第一层:连接层:接收客户端发来的请求,开启一个线程对其进行认证、授权等操作和请求的处理。

第二层:服务层:对SQL语句进行备份、恢复、分装、解析、优化、缓存等操作。

第三层:引擎层:选择一个合适的存储引擎对数据进行处理。

第四层:存储层:将操作完成的数据最终落在文件系统的磁盘上。

这就是MySQL的体系结构!


觉得不错的留下你的足迹吧! 加油打工人!