客户端连接器 mysql为外部程序提供的客户端connector,例如 PHP JAVA .NET RUBY 连接管理 管理客户端连接的相关操作,例如 连接线程池、权限验证、线程重用、连接限制 SQL层 SQL接口 接收客户端的SQL命令,并返回命令结果 SQL 解析器 SQL命令传递到解析器的时候会被解析器验证和解析 将SQL语句分解成数据结构——分析树,并将这个结构传递到后续步骤,以后SQL语句的传递和处理就是基于这个结构的 如果在解析中遇到错误,那么就说明这个sql语句是不合理的,返回错误信息 SQL 优化器 对分析树进行各种优化,例如重写查询、选择读取表的顺序,以及使用哪个索引等 存储引擎会影响服务器如何优化查询,优化器通过存储引擎获取一些参数、某个操作的执行代价、以及统计信息等 SQL 缓存 在解析查询之前,服务器会先访问查询缓存(query cache),它存储SELECT语句以及相应的查询结果集 如果某个查询结果已经位于缓存中,服务器就不会再对查询进行解析、优化、以及执行,将缓存中的结果返回给用户即可 存储引擎层 存储引擎是MySql中具体的与文件打交道的子系统 Mysql的存储引擎是插件式的,存储引擎层和SQL层各自独立,耦合小,甚至可以在线加载新的存储引擎,也就是可以将一个新的存储引擎加载到一个正在运行的MySQL,且不影响MySQL的正常运行 系统管理 提供整个系统的管理服务和控制工具,例如 备份、恢复、安全、主从复制、配置等