
MySQL的内部核心模块主要包括以下几个部分,各自承担着不同的作用,让我们根据下图来分析一下:

MySQL服务器之外的客户端程序,与具体的语言相关,例如Java中的JDBC,图形用户界面SQLyog等。本质上都是在TCP连接上通过MySQL协议和MySQL服务器进行通信。
连接层主要负责处理客户端的连接请求,包括连接处理、身份验证以及安全性等。它是MySQL与客户端进行交互的入口,确保只有经过认证的客户端才能访问数据库。
第一件事就是建立 TCP 连接。身份认证、权限获取。 ,会收到一个Access denied for user错误,客户端程序结束执行用户名密码认证通过,会从权限表查出账号拥有的权限与连接关联,之后的权限判断逻辑,都将依赖于此时读到的权限负责处理客户端的连接请求,包括连接认证和授权。当客户端尝试连接到MySQL服务器时,连接管理器会验证客户端的身份,并根据配置决定是否允许连接。
在较早的MySQL版本中,查询缓存用于存储已经执行过的查询及其结果。如果相同的查询再次被执行,MySQL可以直接从查询缓存中获取结果,从而提高查询效率。然而,由于查询缓存的维护成本较高,且在某些情况下可能导致性能下降,因此在MySQL 8.0及更高版本中被废弃。
负责对SQL语句进行词法分析和语法分析。词法分析主要是提取SQL语句中的关键字和自定义字段,而语法分析则判断SQL语句是否符合MySQL的语法规则。如果语法错误,分析器会返回错误信息。
在分析器之后发挥作用,它运用各种优化技术来提高查询效率。优化器会根据统计信息和执行成本来选择最优的执行计划,包括选择合适的索引、连接顺序等。执行计划是指导执行器如何执行SQL语句的详细步骤。
负责将优化后的SQL语句转化为实际的数据库操作。执行器会根据执行计划调用存储引擎的API来执行具体的数据库操作,如插入、更新、删除数据等。执行器还会处理事务的提交和回滚等操作。
提供了数据备份与恢复、安全组件、主从复制和集群管理、表分区等实用功能。这些功能确保了MySQL数据库的高可用性、数据完整性和安全性。

存储引擎层负责数据的存储和提取,是MySQL架构中的底层部分。MySQL支持多种存储引擎,如InnoDB、MyISAM、Memory等,每种存储引擎都有自己的优点和缺陷,可以根据不同的应用场景选择合适的存储引擎。
除了上述三个主要层次外,MySQL还包括一些其他核心模块,如:
服务器初始化模块:负责在MySQL服务器启动时完成初始化工作,如加载配置文件、分配全局存储缓冲区等。 线程管理器:管理线程的创建、销毁和复用,以减少线程频繁创建和销毁带来的开销。 命令调度器:负责将客户端请求转发给相应的处理模块,如解析器、优化器等。 日志记录模块:负责维护MySQL的日志信息,包括二进制更新日志、命令日志、缓慢查询日志等,用于数据恢复、故障排查等目的。 复制模块:支持MySQL的主从复制功能,实现数据的备份和读写分离。