MySQL 体系架构简介

本贴最后更新于 2058 天前,其中的信息可能已经天翻地覆

引言

MySQL 是一个典型的 C/S 架构程序,MySQL Server 提供数据库服务,完成客户端的请求和操作,Client 负责连接到 Server。MySQL 和其他关系型数据库不一样的地方在于它的弹性以及可以通过插件形式提供不同种类的存储引擎,MySQL 请求处理过程会根据不同的存储引擎发生变化,比如事务性的 InnoDB 和非事务性的 MyISAM,数据的存储和 SQL 的执行会产生很大的差异。本文以 MySQL5.7 为例,简单介绍 MySQL 的物理和逻辑架构。

1. MySQL 物理结构

1.1 配置文件

  • auto.cnf: 配置了 MySQL Server 的 UUID
  • my.cnf: MySQL 的配置文件

1.2 其他重要文件

  • -basedir=dir_name: MySQL 安装的二进制文件目录
  • -datadir=dir_name: MySQL 的数据目录和
  • -pid-file=file_name: 保存 MySQL 进程 ID 文件
  • -log-error=file_name: MySQL 错误日志文件

2. MySQL 逻辑体系架构

MySQL 逻辑系统架构分为 3 层:

  • 应用层
  • MySQL 服务层
  • 存储引擎层

2.1 应用层

应用层是 MySQL 体系架构的最上层,它可其他 client-server 架构一样,主要包含如下内容:

  • 连接处理
  • 用户鉴权
  • 安全管理

1. 连接处理 当一个客户端向服务端发送连接请求后,MySQL server 会从线程池中分配一个线程来和客户端进行连接,以后该客户端的请求都会被分配到该线程上。MySQL Server 为了提高性能,提供了线程池,减少了创建线程和释放线程所花费的时间。

2. 用户鉴权 当客户端向 MySQL 服务端发起连接请求后,MySQL server 会对发起连接的用户进行鉴权处理,MySQL 鉴权依据是: 用户名,客户端主机地址和用户密码

3. 安全管理 当客户连接到 MySQL server 后,MySQL server 会根据用户的权限来判断用户具体可执行哪些操作。MySQL 提供的部分权限的如下:

mysql> show privileges \G;
*************************** 1. row ***************************
Privilege: Alter
Context: Tables
Comment: To alter the table
*************************** 2. row ***************************
Privilege: Alter routine
Context: Functions,Procedures
Comment: To alter or drop stored functions/procedures
*************************** 3. row ***************************
Privilege: Create
Context: Databases,Tables,Indexes
Comment: To create new databases and tables

2.2 MySQL 服务层

该层是 MySQL Server 的核心层,提供了 MySQL Server 数据库系统的所有逻辑功能,该层可以分为如下不同的组件:

  • MySQL Management Server & utilities(系统管理)
  • SQL Interface(SQL 接口)
  • SQL Parser(SQL 解析器)
  • Optimizer (查询优化器)
  • Caches & buffers(缓存)

**1. MySQL Management Server & utilities(系统管理)**提供了丰富的数据库管理功能,具体如下:

  • 数据库备份和恢复
  • 数据库安全管理,如用户及权限管理
  • 数据库复制管理
  • 数据库集群管理
  • 数据库分区,分库,分表管理
  • 数据库元数据管理

**2. SQL Interface(SQL 接口)**SQL 接口,接收用户的 SQL 命令并进行处理,得到用户所需要的结果,具体处理功能如下:

  • Data Manipulation Language (DML).
  • Data Definition Language (DDL).
  • 存储过程
  • 视图
  • 触发器

**3. SQL Parser(SQL 解析器)**解析器的作用主要是解析查询语句,最终生成语法树。首先解析器会对查询语句进行语法分析,如果语句语法有错误,则返回相应的错误信息。语法检查通过后,解析器会查询缓存,如果缓存中有对应的语句,就直接返回结果不进行接下来的优化执行操作。

注:读者会疑问,从缓存中查出来的数据会不会被修改,与真实的数据不一致,这里读者大可放心,因为缓存中数据被修改,会被清出缓存。

**4. Optimizer(查询优化器)**优化器的作用主要是对查询语句进行优化,包括选择合适的索引,数据的读取方式。

**5. Caches & buffers(缓存)**包括全局和引擎特定的缓存,提高查询的效率。如果查询缓存中有命中的查询结果,则查询语句就可以从缓存中取数据,无须再通过解析和执行。这个缓存机制是由一系列小缓存组成,如表缓存、记录缓存、key 缓存、权限缓存等。

2.3 存储引擎层

1. 存储引擎 存储引擎是 MySQL 中具体与文件打交道的子系统,也是 MySQL 最有特色的地方。MySQL 区别于其他数据库的最重要特点是其插件式的表存储引擎。他根据 MySQL AB 公司提供的文件访问层抽象接口来定制一种文件访问的机制(该机制叫存储引擎)。

2. 物理文件 物理文件包括:redolog、undolog、binlog、errorlog、querylog、slowlog、data、index 等

3. 参考文献

MySQL Architecture and Components
Understanding MySQL Architecture
带你认识 MySQL 之 MySQL 体系结构

# 更多内容请关注公众号

  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    675 引用 • 535 回帖
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    140 引用 • 441 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...