MySQL指南(一)MySQL体系结构介绍

  • 2020 年 1 月 16 日
  • 笔记

前言

MySQL是当今最通用的数据库软件之一,也是大部分人接触最多,时间最长的数据库软件之一。深入了解MySQL的架构和设计对于DBA,研发和运维都非常重要,能够帮助我们在日常工作中更好地理解和运用MySQL。

本系列主要介绍MySQL的架构设计,而不会过多涉及具体的SQL语句介绍和使用。需要读者具备初级的MySQL和SQL基础。

MySQL介绍

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品,世界上最流行的关系型数据库管理系统之一,在 网络应用方面,MySQL是最好的关系数据库管理系统 (Relational Database Management System,RDBMS) 应用软件之一。

MySQL被设计为一个可移植的数据库,几乎能在当前所有的操作系统上运行,比如Linux,Solaris,Mac和Windows。尽管各种系统在底层(如线程)实现方面各有不同,但MySQL几乎总能保证在各平台上的物理体系结构的一致性。

MySQL是一个单进程多进程架构的数据库,但与Oracle多进程的架构有所不同(Oracle的Windows版本也是单进程多进程的架构)。这也就是说,MySQL数据库实例在系统上的表现就是一个进程。

区分数据库、数据库实例、数据库服务器

初入门时很多人可能会分不清这几个概念,在这里给出定义。

数据库(Database)

操作系统或存储上的数据文件的集合。MySQL数据库中,数据库文件可以是* .frm、*.MYD、*.MYI、*.ibd等结尾的文件,不同存储引擎文件类型不同。

数据库实例(Instance)

数据库实例是一个应用程序,是位于用户和操作系统之间的一层数据管理软件,由后台进程或者线程以及一个共享内存区组成。用户对数据库数据的任何操作,都是在数据库实例下进行的。应用程序只有通过数据库实例才能和数据库打交道。

数据库服务器(Database Server)

部署安装数据库实例的服务器。

数据库和数据库实例的关系

通常情况下,数据库实例和数据库是一一对应的关系,也就是一个数据库实例对应一个数据库;但在集群环境中存在多个数据库实例共同使用一个数据库。

MySQL体系结构

用一张图来总览MySQL的架构组成。自上而下可以分为网络连接层,服务层(核心层),存储引擎层,物理文件层。下面分别进行介绍。

MySQL体系架构图

网络连接层

负责MySQL和其他应用程序的连接交互,包括连接管理、授权认证、安全等。由客户端程序连接和MySQL服务器上的连接池组成。

每个客户端连接都对应着服务器上的一个线程,MySQL服务器上维护了一个线程池,避免为每个连接都创建销毁一个线程。当客户端连接到MySQL服务器时,服务器对其进行认证。登录认证后,还要验证客户端是否有执行某个查询的操作权限。这一层并不是MySQL所特有的技术。

使用连接池的必要性:

每个连接对应一个线程,实际业务中通常有许多个连接访问数据库服务器,如果每次连接都要创建一个新的线程,连接释放则销毁线程,对于系统损耗是非常大的。通过连接池维护和缓存一定的连接,由应用程序动态地对池中的连接进行申请、使用和释放,减少了内存损耗,提升了资源利用率。

服务层(核心层)

该层是MySQL的核心,包括很多重要的服务。分别有:

管理服务和工具组件,系统管理和控制工具,例如备份恢复、MySQL复制、集群等 ;

SQL接口组件,接受用户的SQL命令,并且返回用户需要查询的结果;

查询分析器组件,SQL命令传递到解析器的时候会被解析器验证和解析(权限、语法结构)

优化器组件,SQL语句在查询之前会使用查询优化器对查询进行优化,选取最优的路径进行条件联接并生成最终查询结果;

缓冲(Cache)组件,如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据;

存储引擎层

存储引擎负责MySQL中数据的存储与提取。 服务器中的查询执行引擎通过API与存储引擎进行通信,通过接口屏蔽了不同存储引擎之间的差异。由于关系数据库中数据是以表的形式存储的,存储引擎又被称为表类型。

MySQL采用插件式的表存储引擎,是其区别于其他数据库最重要的特点。在Oracle 和SQL Server等数据库中,所有的数据存储管理机制都是一样的。而MySQL提供了多种存储引擎,用户可以根据需求为每张表选择特定的存储引擎(存储引擎是针对于表的而不是针对库)。

关于存储引擎的更多特性和功能,之后的文章会详细介绍。

物理文件层

该层主要将数据库的数据(表,索引等)存储在文件系统上,并完成与存储引擎的交互。存储数据包括日志文件,数据文件,配置文件等。

下一章将会讲解底层物理文件层的相关内容。