mysql 基础架构
-
连接层
MySQL数据库的最上层,是一些客户端的连接服务,包含socket通信和大多数基于C/S接口的TCP/IP通信;主要完成连接处理、授权认证、协议相关的安全方案。在该层引入线程池,为通过认证的连接分配连接线程。 -
服务层
MySQL数据库的第二层,主要完成大多数核身服务功能,包含线程池、服务管理、SQL接口、SQL解析器、SQL优化器、缓存缓冲区。所有的跨存储引擎功能也在这一层实现,如存储过程、函数、事件等。在该层,MySQL服务器会解析查询并创建相应的内部解析树,并对其完成相应的优化(如查询顺序、是否利用索引等),最后生成相应的执行操作。如果是select语句,MySQL服务器还会查询内部缓存,通过查询缓存提高查询效率。- 线程池
- 服务管理器
- SQL接口
- SQL解析器
- SQL优化器
query optimizer是MySQL中专门负责优化select语句的优化器模块,它主要通过计算分析系统中收集到的统计信息,为客户端区请求的query提供他认为最优的执行计划(仅仅是优化器认为最优,DBA可能不认为是最优方案,次过程最消耗时间);当客户端向MySQL请求一条query,命令解析器模块会完成请求解析分类,区别出select并转发给query optimizer,query optimizer首先会对整条query语句进行优化,处理掉一些常量表达式的运算,直接换算成常量值。并对query中的查询条件进行简化和转换,如去掉一些无用或显而易见的条件和结构调整等。然后分析query中隐藏信息(``如果存在隐藏信息``),判断隐藏信息是否可以完全确定该query的执行计划。如果没有隐藏信息或者隐藏信息不足以完全确定执行计划,则会读取所涉及对象的统计信息,根据query进行写相应的计算分析,然后得出最后的执行计划。
- 缓存、缓冲区
-
存储引擎层
存储引擎真正负责了MySQL中数据的存储和查询,服务层通过API与存储引擎进行通信。不同的存储引擎功能特色不同,选用时根据实际业务需求选择。 -
数据存储层
主要将数据存储于文件系统中,并于存储引擎交互。
网友评论