一、MySQL体系架构
MySQL Server架构大致可以分为:网络连接层、服务层、存储引擎层和系统文件层。
网络连接层
客户端连接器(Client Connectors)提供与MySQL服务器建立连接的支持。
目前主流服务器编程技术,例如:Java、C、Python,它们均是通过各自API与MySQL建立连接
服务层
服务层为MySQL Server的核心,主要包括系统管理和控制工具、连接池、SQL接口、解析器、查询优化器和缓存六个部分。
-
连接池
负责存储和管理客户端与数据库的连接,一个线程管理一个连接。 -
系统管理和控制工具
例如备份恢复、安全管理、集群管理等。 -
SQL接口
用于接受客户端发送的各种SQL命令,并且返回用户需要的接口。例如:DML、DDL、存储过程、视图、触发器等。 -
解析器
负责将请求的SQL解析成一个解析树,然后根据一些MySQL规则进一步检查解析树是否合法。 -
查询优化器
当解析树通过解析器语法检查后,交由查询优化器将其转化为执行计划,然后与存储引擎交互。查询优化器一般流程为:选取-->投影-->连接 策略 例如:select id,name from user where id = 1 1.select先根据where语句进行选取,并不是查询全部数据再过滤 2.select查询根据id、name进行属性投影,并不是取出所有字段 3.将前面的选取和投影连接起来行程最终的结果
-
缓存
缓存机制是由一系列小缓存组成的。比如表缓存、记录缓存、权限缓存、引擎缓存等。如果查询有命中的查询接口,查询语句就可以直接查询缓存中取数据。