第一层:连接/线程处理
客户端连接MySQL,并进行连接处理、授权认证、安全等控制;
每个连接都会占用服务器的一个线程,不同连接的查询在线程中独立。MySQL会缓存这些线程,避免重复地创建和销毁线程(可以利用线程池,使池中少量线程服务大量连接);
连接后会进行授权认证,验证客户端是否有执行命令的权限(例如:客户端对某数据库中的数据表是否有查询权限);
第二层:解析器、优化器、查询缓存
这一层负责将SQL语句进行解析、分析、缓存和优化,内置函数和所有跨存储引擎的功能都在这一层实现,是MySQL的核心;
MySQL对语句进行解析,创建内部的数据结构(解析树),然后对查询进行优化;
用户可以使用 explain(执行计划)查看优化器的优化过程;
SELECT语句在每次解析前会在查询缓存中查看是否有执行过,如果执行过,就不需要经过解析、优化和执行的过程,而是直接返回结果;
第三层:存储引擎
存储引擎负责数据的存储和提取,不同的存储引擎各有优劣,存储引擎通过API去和服务器进行通信,这就屏蔽了不同的存储引擎之间的差异;
MySQL5.1前默认的存储引擎是 MyISAM,之后为 InnoDB