体系架构图
客户层:
客户端连接层,提供与MySQL服务器建立的支持,不同语言与 SQL 的交互。
服务层:
服务层是MySQL Server的核心,主要包含系统管理和控制工具、连接池、SQL接口、解析器、查询优
化器和缓存六个部分。
连接池(Connection Pool): 负责存储和管理客户端与数据库的连接,一个线程负责管理一个连接。权限判断可以审核用户有没有访问某个库、某个表,或者表里某行数据的权限。
系统管理和控制工具(Management Services & Utilities):例如备份恢复、安全管理、集群管理等。
SQL接口(SQL Interface):用于接受客户端发送的各种SQL命令,并且返回用户需要查询的结果。比如DML、DDL、存储过程、视图、触发器等。
解析器(Parser):查询解析器针对 SQL 语句解析它的整个执行过程,简称解析树,判断语法是否正确。
查询优化器(Optimizer):当“解析树”通过解析器语法检查后,将交由优化器将其转化成最优的执行计划,然后与存储引擎交互。
缓存(Cache&Buffer): 缓存机制是由一系列小缓存组成的。比如表缓存,记录缓存,权限缓存,引擎缓存等。如果查询缓存有命中的查询 结果,查询语句就可以直接去查询缓存中取数据(从mysql 8开始,由于并发会引发很大问题,查询缓存被去掉了。可以使用redis代替)
存储引擎层:
主要负责 MySQL 中数据的存储和提取。与底层系统文件进行交互。
MySQL存储引擎是插件式的,服务器中的查询执行引擎通过接口与存储引擎进行通信,接口屏蔽了不同存储引擎之间的差异 。
存储引擎可以独立于表中,每个表可以使用不同的搜索引擎。
现在有很多种存储引擎,各有各的特点,最常见的是MyISAM和InnoDB。
物理层:
主要是将数据库的数据存储在操作系统的文件系统之上,并完成与存储引擎的交互。
数据库层面的日志:
参数文件 my.cnf ,
错误日志 error.log
慢查询日志 slow.log
全量日志 general log
二进制日志文件 binlog
审计日志 andit log
中继日志 relay log
套接字文件 socket
进程文件 pid
表结构文件
存储引擎层面:
redo log 又称为重做日志
undo log 用于撤销回退的日志,记录事务执行前后行数据的历史记录。(这两个都是InnoDB独有的)