- 1 MySQL向外提供的交互接口(Connectors)
- 2 连接层 Connection Pool (连接池)
- 3 管理服务组件和工具组件 management service and Utilities库 (主要负责数据的备份,数据库的集群,认证,权限,查询索引等)
- 4.SQL接口组件(SQL Interface)(负责接收SQL命令,判断SQL的类型是DML还是DDL还是视图等)
- 5.查询分析组件(Parser)
- 6.优化器组件(Optimizer)
- 7.缓存文件(Caches & Buffers)
- 8.插件式存储引擎(Pluggable Storage Engines)
- 9.物理文件(File System)
逻辑架构流程
1 当存在(缓存)的时候 Connectors(结构层)-> connectors Pool(连接层/池) -> cache & Buffers(缓存层) ->Connectors(结构层)
2 当不存在缓存时 Connectors(结构层)-> connectors Pool(连接层/池) -> SQL interface(SQL接口组件层)-> Parser(查询分析组件) -> Optimizer (优化器组件) ->Pluggable Storage Engines (插件式存储引擎)【真正干活的层】->同时返回给Connectors(结构层) 和 写入缓冲给Caches & Buffers(缓存层)
1 MySQL向外提供的交互接口(Connectors)
2 连接层 Connection Pool (连接池)
3 管理服务组件和工具组件 management service and Utilities库 (主要负责数据的备份,数据库的集群,认证,权限,查询索引等)
2.1(backup & recovery 备份&容灾恢复)
2.2(mgration & metadata)
2.3(Cluster 集群)
2.4(Adminstration管理)
2.5(Configuation 配置)
2.5(secutrity 安全复制)
2.6(Replication 复制)
.....等等
4.SQL接口组件(SQL Interface)(负责接收SQL命令,判断SQL的类型是DML还是DDL还是视图等)
5.查询分析组件(Parser)
5.1 负责语法解析,就是我们的SQL语句,在这里进行语法的检查,语法检查失败直接返回语法错误。
5.2 语义解析,比如查询的某张的表不存在直接返回xx表不存在。
6.优化器组件(Optimizer)
6.1 对SQL命令进行优化,SQL的优化主要就是针对这块
6.2 MySQLServer会对发送过来的SQL语句进行优化,根据sql语句,生成一系列的执行计划,然后从执行计划选出最优的一条计划执行
6.3 在这里判断是否使用索引,如何使用索引
7.缓存文件(Caches & Buffers)
7.1 查询缓存:主要对SQL语句缓存,把经常使用的SQL语句缓存起来
7.2 数据缓存:从磁盘中加载数据到内容中,然后对内存中的数据进行过滤
7.3 日志缓存:通过日志缓存恢复记录 这里就是undo和redo