Mysql Server架构自上往下可以分为网络连接层、服务层、存储引擎层和系统文件层
服务层是MySQL Server的核心,主要包含系统管理和控制工具、连接池、SQL接口、解析器、查询优化器和缓存六个部分。
存储引擎负责MySQL数据的存储与提取,与底层系统文件进行交互。MySQL存储引擎是插件式的,服务器中的查询执行引擎通过接口与存储进行通信,接口屏蔽了不同存储引擎之间的差异。现在有很多存储引擎,各有各的特性,最常见是MyISAM和InnoDB。
该层负责将数据库的数据和日志存储在文件系统之上,并且完成与存储引擎的交互,是文件的物理存储层。主要包含日志文件、数据文件、配置文件、pid文件、socket文件等等。
日志文件
错误日志(Error log)
默认开启,show variables like '%log_error%';
通用查询日志(General query log)
记录一般查询语句,show variables like '%general%';
二进制日志(Binary log)
记录对MySQL数据库执行的更改操作,并且记录语句的发生时间、执行时长;但是不记录select、show等等不修改数据库的SQL。主要用于数据库恢复和主从复制。
慢查询日志(slow query log)
记录所有执行时间超时的查询SQL,默认是10秒
show variables like '%slow_query%';// 是否开启
show variables like '%long_query_time%'; // 超时时间
配置文件
用于存放MySQL所有的配置信息文件,比如my.cnf、my.ini等。
数据文件
元数据
(meta)信息,包括表结构的定义信息等等,每张表都会一个frm文件数据
(data),每张表都会有一个.MYD文件索引
相关信息,每张表MyISAM表对应一个.MYI文件pid文件
pid文件是mysqld应用程序在Unix/Linux环境下的一个进程文件,和许多其他Unix/Linux服务端程序一样,它存放着自己的进程id
Socket文件
socket文件也是在Unix/Linux环境下才有的,用户在Unix/Linux环境下客户端连接可以不通过TCP/IP网络而直接使用Unix Socket来连接MySQL Server