最上层的服务并不是MySQL独有的,大多数基于网络的客户端/服务端的工具或者服务都有类似的架构。比如连接处理、授权认证等等。
第二层架构,大多数MySQL的核心服务功能都在这一层,包括查询解析、分析、优化、缓存以及所有的内置函数,所有跨存储引擎的功能都在这一层实现:存储过程、触发器、视图等。
第三层包含了存储引擎。存储引擎负责MySQL中数据的存储和提取。服务器通过API与存储引擎进行通信,这些接口屏蔽了不同存储引擎之间的差异,使得这些差异对上层的查询过程透明。但存储引擎不会去解析SQL(InnoDB例外,它会解析外键定义),不同存储引擎之间也不会相互通信,而只是简单地响应上层服务器的请求。
当客户端连接到MySQL服务器时,服务器需要对其进行认证。认证基于用户名、原始主机信息和密码。一旦客户端连接成功,服务器会继续验证该客户端是否具有执行某个特定查询的权限。
MySQL会解析查询,并创建内部数据结构(解析数),然后对其进行各种优化,包括重写查询、决定表的读取顺序以及选择合适的索引等。优化器并不关心表使用的是什么存储引擎,但存储引擎对于优化查询是有影响的。对于SELECT语句,在解析查询之前,服务器会先检查查询缓存,如果能够在其中找到对应的查询,服务器就不必再执行查询解析、优化和执行的整个过程,而是直接返回查询缓存中的结果集。
----《高性能MySQL》