Server层
- Connectors:MySQL客户端。支持JDBC接口等规范。同时支持多种连接方式:
- TCP传输层协议,并支持TLS/SSL证书加密
- socket套接字
- windows的共享内存
- windows的命名管道
- Connection Pool:连接池,为每个连接分配一个线程,检查SQL涉及的库与表权限,分配资源
- Enterprise Management Services & Utilities:提供的服务与工具。提供备份恢复、认证、同步复制与集群,支持表的分区。使用实例管理器管理数据库实例,也支持通过information_schema库来看每个数据库的元数据信息等
- SQL Interface:支持很多SQL接口。如DML数据操作(增删改查),DDL(数据定义如alter)。存储过程,视图和触发器等
- Parser:解析器,在具体执行SQL时会先进行解析,形成一种内部结构树,用于支持接下来的优化器
- Optimizer:优化器,列举:
- 无效条件(trivial_condition_removal):无用的条件,用于为true或false。如1=1或者1<>1
- 等值传递(equality_propagation):如a=b and b=1优化成b=1 and multiple equal(a, b)
- 常量传递(constant_propagation):如a=b and b<5优化成a<5 and b<5
- 根据成本来决定SQL的执行计划,比如选择哪个索引成本低,哪个字段优先匹配,多表连接则通过计算来选择驱动表与被驱动表等。成本具体设置可在
mysql
库下的server_cost
和engine_cost
查看
- Caches & Buffer:包含Server层的SQL缓存,和特定存储引擎的缓冲区如InnoDB的Change Buffer
存储引擎层
- Pluggable Storage Engine:存储引擎(插件式)层
- File System:支持的文件系统,NTFS、NFS等
- Files & Logs:执行过程产生的日志和文件,如Redo Log重做日志,事务日志Undo Log,慢SQLSlow文件,数据文件和索引文件,错误日志等