本文为翻译的文章,作者Rathish Kumar,原文:
https://www.rathishkumar.in/2016/04/understanding-mysql-architecture.html
<https://www.rathishkumar.in/2016/04/understanding-mysql-architecture.html>


对于IT从业人士来说,世界上最流行的开源数据库系统的架构是非常重要的。有很多原因促成了MySQL在全世界的普及,但其中一个主要原因是它的架构,尽管有很多大玩家,比如Oracle,SQL
Server和DB2,但MySQL的架构让它很独特并且是大部分开发者的首选。在这篇文章中,我们将要讨论MySQL关系型数据库管理系统的内部架构。本文是为初级的DBA,数据开发者和软件开发者,以及对于MySQL感兴趣的读者准备的。

主要组成部分:

MySQL架构描述了MySQL系统中组件之间是怎样相互关联的。基本上,MySQL架构是一个客户端-服务器系统。MySQL数据库服务器是这个架构中的服务器,连接到服务器的应用程序是客户端。MySQL架构包含以下主要部分。

应用层:


该层位于MySQL架构的最上层;你可以在很多客户端-服务器的架构中看到同样的这一层。这层包括一些对于大多数据客户端-服务器应用都通用的服务,其中一些服务列举如下:

* 连接处理
* 认证
* 安全
连接处理:

当一个客户端连接服务器的时候,客户端获得了为这个连接而启动的它自己的线程。来自那个客户端的所有查询都在那个特定的线程里进行处理。此线程被服务器缓存,所以不需要对每一个新连接都进行创建和销毁的操作。
认证:
每当一个客户端连接MySQL服务器的时候,服务器都会执行认证。认证基于用户名,客户端主机和客户端用户密码。
比如:
root@localhostroot: 客户端用户名
localhost:主机名,请求从这里发起
安全:
客户端连上MySQL服务器以后,服务器会检查客户端是否有权限发起特定的请求。
比如:

MySQL服务器层:
该层处理MySQL关系型数据库管理系统的所有逻辑功能。MySQL服务器的大脑就位于这一层。MySQL的逻辑层分成多个子部件,包括:

* MySQL服务和工具
* SQL接口
* SQL解析器
* 优化器
* 缓存 & 缓冲
MySQL服务和工具:
相对来讲,MySQL提供了广泛的服务和工具。这是MySQL盛行的主要原因之一。该层提供了MySQL系统管理和维护的服务与工具。下面列举了其中一些:

* 备份 & 恢复
* 安全
* 复制
* 集群
* 分片
* 工作台
SQL接口:
结构化查询语言(SQL)是一种查询语言,用来查询MySQL服务器。它是一种MySQL用户和服务器交互的工具。SQL接口中一些组件如下:

* 数据操纵语言(DML)
* 数据定义语言(DDL)
* 存储过程
* 视图
* 触发器
解析器:
MySQL解析查询以便创建一个内部结构(解析树)。MySQL解析器是一种单通道的编译器。按照《MySQL内幕》所描述,解析器的结构如下:

* 词法分析(从一个字符流中生成词语或者标记),当解析常规语句的时候,它是在第一阶段实现的。
* 语法分析(生成句子),语义分析(确保这些句子都讲得通),以及代码生成(为编译准备),所有这些都是在代码阶段一次性完成的。
优化器:
创建了内部解析树之后,MySQL运用了多种优化技术。这些技术可能包括,查询重写,扫描表的顺序以及选择合适的索引。实际上你可以询问服务器来解释优化的多个方面。
比如:
EXPLAIN SELECT * FROM world.city;

缓存:

MySQL缓存(查询缓存)保存了SELECT语句的完整结果集。在解析查询之前,MySQL服务器先找查询缓存。如果客户端发起的查询与缓存中的完全一致,服务器就简单地跳过解析、优化甚至执行,它直接就从缓存中把输出显示出来。
存储引擎层:

可插拔式存储引擎的特点让MySQL很独特,也让它变成了大多数开发者的首选。这个特点让MySQL到达了大玩家的边缘。MySQL可以让我们根据不同的场景和要求来选择不同的存储引擎。我们在接下来的文章中会讨论每一种存储引擎的特点,下面只是列出了MySQL支持的存储引擎:
MyISAM.
InnoDB.
Federated.
Mrg_MyISAM.
Blackhole.
CSV.
Memory.
Archive.
Performance_schema.

MySQL提供可插拔式的存储引擎,不同的存储引擎可以定义在表的级别。一个数据库里包含的表可能会有多种存储引擎。
mysql>SHOW ENGINES;
Show
engines命令把服务器支持的所有存储引擎都列举出来。希望这个帖子能够让你对于MySQL有一个总体的理解。下一篇让我们讨论不同的存储引擎和它们的特点。

欢迎关注微信公众号,获取更多信息。
​​​​

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信