连接层:
负责和客户端、用户进行交互,需要和不同的客户端和中间服务器进行交互,建立连接,记住连接的状态,响应它们的请求,返回数据和控制信息(错误信息、状态码等),以及对这些连接进行认证等。
逻辑层:
主要包括了系统管理和控制工具、连接池、SQL接口、解析器、查询优化器和缓存等部分。
存储引擎层:
MySQL中的存储引擎层主要负责数据的写入和读取,与底层的文件进行交互。值得一提的是,MySQL中的存储引擎是插件式的,服务器中的查询执行引擎通过相关的接口与存储引擎进行通信,同时,接口屏蔽了不同存储引擎之间的差异。MySQL中,最常用的存储引擎就是InnoDB和MyISAM
存储层:
文件的物理存储层。主要包含日志文件(redolog,undo.log),数据文件,索引文件,二进制日志,错误日志,配置文件,pid 文件,socket 文件
db.opt文件:主要记录当前数据库使用的字符集和检验规则等信息。
frm文件:存储数据表的结构信息,主要是数据表相关的元数据信息,包括数据表的表结构定义信息,每张表都会有一个frm文件。(MySQL8版本中的innodb存储引擎的表没有frm文件。)
MYD文件:MyISAM存储引擎专用的文件格式,主要存放MyISAM存储引擎数据表中的数据,每张MyISAM存储引擎表对应一个.MYD文件。
MYI文件:MyISAM存储引擎专用的文件格式,主要存放与MyISAM存储引擎数据表相关的索引信息,每张MyISAM存储引擎表对应一个.MYI文件。
ibd文件:存放Innodb存储引擎的数据文件和索引文件,主要存放的是独享表空间的数据和索引,每张表对应一个.ibd文件。
ibdata文件:存放Innodb存储引擎的数据文件和索引文件,主要存放的是共享表空间的数据和索引,所有表共用一个(或者多个).ibdata文件,可以根据配置来指定共用的.ibdata文件个数。
ibdata1文件:MySQL的系统表空间数据文件,主要存储MySQL的数据表元数据、Undo日志等信息。
ib_logfile0和ib_logfile1文件:MySQL数据库中的Redo log文件,主要用于MySQL实现事务的持久性。如果在某个时间点MySQL发生了故障,此时如果有脏页没有写入到数据库的ibd文件中,在重启MySQL的时候,MySQL会根据Redo Log信息进行重做,将写入Redo Log并且尚未写入数据表的数据进行持久化操作。
pid文件:pid文件是存放MySQL进程运行时的进程号的文件,主要存在于Unix/Linux环境中,具体的存储目录可以在my.cnf或者my.ini文件中进行配置,MySQL是一个进程,多线程的服务。
socket文件:socket文件和pid文件一样,都是MySQL在Unix/Linux环境中运行才会有的文件。在Unix/Linux环境中,客户端可以直接通过socket来连接MySQL。
|