1.连接层
+
当
MySQL
启动(
MySQL
服务器就是一个进程),等待客户端连接,每一个客户端连接请求,
服务器都会新建一个线程处理(如果是线程池的话,则是分配一个空的线程),每个线程独
立,拥有各自的内存处理空间
show VARIABLES like '%max_connections%'
2.认证层
连接到服务器,服务器需要对其进行验证,也就是用户名、
IP
、密码验证,一旦连接成功,
还要验证是否具有执行某个特定查询的权限(例如,是否允许客户端对某个数据库某个表的
某个操作)
3.处理层
这一层主要功能有:
SQL
语句的解析、优化,缓存的查询,
MySQL
内置函数的实现,跨存储
引擎功能(所谓跨存储引擎就是说每个引擎都需提供的功能(引擎需对外提供接口)),例如:
存储过程、触发器、视图等。
1.
如果是查询语句(
select
语句),首先会查询缓存是否已有相应结果,有则返回结果,无则
进行下一步(如果不是查询语句,同样调到下一步)
2.
解析查询,创建一个内部数据结构(解析树),这个解析树主要用来
SQL
语句的语义与语
法解析;
3.
优化:优化
SQL
语句,例如重写查询,决定表的读取顺序,以及选择需要的索引等。这一
阶段用户是可以查询的,查询服务器优化器是如何进行优化的,便于用户重构查询和修改相
关配置,达到最优化。这一阶段还涉及到存储引擎,优化器会询问存储引擎,比如某个操作
的开销信息、是否对特定索引有查询优化等