MySQL体系架构

2020-09-04 16:13:26 11495

MySQL体系架构

1.jpg 

MySQL Server体系架构自顶向下大致可以分为以下四层:

·网络连接层

·服务层

·存储引擎层

·系统文件层

 

网络连接层

网络连接层其实就是我们的客户端,目前支持各种主流的编程语言如Java、C、Python等,它们通过各自的API与MySQL建立连接和通信。

服务层

服务层是MySQL的核心,主要包括连接池、管理工具、SQL接口、解析器、查询优化器、缓存六大部分

·连接池:负责存储和维护客户端和数据库之间的连接,一个线程对应一个连接。

·管理工具:备份管理、安全管理、集群管理等。

·SQL接口:用于接收客户端发送的各种SQL语句,并返回对应的结果集。如DDL、DML等。

·解析器:负责对SQL进行语法语义,并生成一棵语法树。

·查询优化器:将语法树转化为执行计划,与具体的存储引擎进行交互。

·缓存:对SQL语句、结果集等进行缓存,由于MySQL中的数据经常变化,每次数据变了还需要维护缓存,维护成本高,不适合使用缓存,高版本将移除缓存模块。

 

存储引擎层

存储引擎负责存储和提取MySQL中的数据,与底层文件系统进行交互。

MySQL中的存储引擎是插件式,服务层的SQL执行引擎通过存储引擎接口与具体的存储引擎进行通信,接口屏蔽了不同存储引擎之间的差异(面向接口编程实现解耦)。

MySQL支持很多的存储引擎,各有各的特点与使用场景,最常用的是InnoDB和MyISAM,其中MySQL默认的存储引擎为InnoDB,

系统文件层

系统文件层负责将数据和日志存储在文件系统上,与存储引擎层进行交互。主要包括数据文件、日志文件、配置文件、pid文件、Socket文件等。

2.jpg

错误日志(Error Log):记录系统发生的错误,默认开启。

3.jpg

通用查询日志(General Query Log):记录一般的查询语句。

4.jpg

二进制日志:记录对MySQL数据库的更改操作,并记录了发生的时间、执行时长,不记录select、show这种不修改数据库的SQL。主要用于数据恢复和主从复制。

5.jpg

show binary logs可以用于查询二进制日志。

慢查询日志:记录所有执行时间超时的SQL语句,默认是10s。

6.jpg

配置文件

用于存放MySQL启动所需要的配置信息,如my.conf、my.ini等。

数据文件

db.opt文件:记录这个数据库默认使用的字符集和校验规则。

frm文件:存储与表相关的元数据信息,包括表结构的定义信息等,每个表都有一个.frm文件。

MYD文件:MyISAM引擎专用,用于存储表的数据,每个表都有一个.MYD文件。

MYI文件:MyISAM引擎专用,用于存储表的索引,每个表都有一个.MYI文件。

ibd和ibddata文件:存放InnoDB的数据文件(包括索引)。InnoDB存储引擎有两种表空间方式:独享表空间和共享表空间。独享表空使用.ibd文件存放数据,且每一个表对应的一个.ibd文件。共享表空间使用.ibddata文件存放数据,所有表共同使用一个(或多个,可自行配置).ibddata文件。

ibdata1文件:系统表空间数据文件,存储表元数据、Undo日志等。

ib_logfile0、ib_logfile1文件:Redo log日志文件。

pid文件

pid文件是mysqld应用程序在linux环境下的一个进程文件,存放自己的进程id。

socket文件

socket文件也是在linux下才有的,用户在linux环境下客户端连接可以不通过TCP/IP网络而直接使用Socket来连接MySQL。

 


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: