MySQL逻辑架构简单讲解 | 8月更文挑战

152 阅读2分钟

这是我参与8月更文挑战的第2天,活动详情查看:8月更文挑战

猫和老鼠.jpg

前言: 为了更好的学习MySQL,并且可以充分发挥它的性能。首先需要理解它的设计和其架构。它的架构使得MySQL可以运行在不同的环境中较好的运行。像Oracle一样,它也支持很多的数据类型。本文简单围绕其逻辑架构来讲解其设计。

逻辑架构图

逻辑架构图可以帮助我们更直观的理解MySQL服务器各个工作组件之间的协同工作。

image.png

从上到下依次是:

1. 客户端连接层

连接层与其他工具客户端的架构是类似的。客户端通过JDBC,ODBC等驱动接口来连接。包括有连接处理,授权认证,安全协议等等。

我们经常使用的数据库连接池就属于这一层级。MySQL 5.5更新的插件支持线程池操作,效果是用少量的线程来服务大量的连接。
它是用来减少每次连接需要校验的用户名、密码、权限等时间。将其存储下来,下次进行连接时可以直接使用建立好的线程连接。这一效果是显著的。关于连接池后面也会展开详细讲解。

2. 服务层

服务层负责了MySQL大部分的核心功能。包括缓存、查询解析、分析、优化等以及MySQL中所有的内置的函数(时间日期、数学计算、加密等)。所有的跨存储引擎的功能,都在这一层实现:存储过程、触发器、试图等。 所谓的跨存储引擎的意思是:当前MySQL数据库下的所有的存储引擎都可以使用。

3. 存储引擎层

存储引擎层负责数据的存储和读取。每个存储引擎都有它的独特性和优缺点,在实际的项目中可以根据其业务特点来选择不同的存储引擎。在相互之间不进行通信,在受到API调用的时候去简易响应服务层的请求。这些API接口可以屏蔽不同存储引擎之间的差异化,使得不同存储引擎的外部调用的一致性。 每个存储引擎都因为其不同的存储技术、查询技术从而影响存储引擎对于某种(类型)数据查询写入的独特性。

举例:在客户端发送查询主键最大的一条数据时,存储引擎并不会解析SQL。(InnoDB支持解析外键,这个是原本MySQL服务器不支持的)


本文参考资料

  • 《高性能MySQL》