开局一张图 内容全靠编
本文主要是说一下,MySQL都有哪些部分组成,这些部分分别是什么作用,俯瞰一下MySQL。
连接池
负责存储和管理与数据库的连接. 每个连接都是一个 IO 操作,, 每个 IO 操作对应一个线程。从而实现数据库为多个连接服务。
数据库服务管理工具
数据备份,集群,安全等工具。
SQL 接口
接受各种SQL语句(DDL,DML,存储过程等),并返回查询结果。
查询解析器
负责将 SQL 接口,接收的 SQL 语句进行解析,验证语法是否合法。
查询优化器
将 解析器 解析好的语法,进行优化并转化为执行计划。然后与存储引擎交互。
select id,name from t_user where age > 10;
优化后的执行计划是先过滤出age>10
的数据,然后取出id
,name
字段对应的值。而不是先查询所有数据再过滤。
缓存
查询缓存中存在结果,查询语句就直接返回。由各种小缓存组成,如:表缓存,记录缓存,权限缓存,引擎缓存等。
插件式存储引擎
存储引擎负责数据的存储与读取,与底层物理存储文件交互。MySQL存储引擎式插件式的,查询优化器与存储引擎通过接口进行交互,接口屏蔽了各个存储引擎的差异。
系统物理文件
日志文件
- 错误日志
默认开启。
- 通用日志
记录一般查询日志。
- 二进制日志
记录了对数据库的更改操作,并记录了执行时间,执行时长。但不记录查询操作。主要用于数据库的恢复和主从复制。
- 慢查询日志
记录所有执行时间超时的 SQL。默认超时时间为 10 秒。
配置文件
MySQL相关的配置文件。如 my.cnf
数据文件
存储各个存储引擎特有的数据文件,表元数据,日志文件等。