MySQL 体系结构与查询执行过程详解
MySQL 是一个采用单进程多线程架构模式的关系型数据库管理系统。本文将详细介绍 MySQL 的体系结构及其查询语句的执行过程,并探讨性能优化的关键点。
MySQL 体系结构
MySQL 的架构为 Client-Server 架构。总体上,我们可以将 MySQL 的体系结构分为三层:连接层、服务层、存储引擎层。
架构分层
模块详解
- Connector:支持各种语言与 SQL 的交互,如 PHP、Python、Java 的 JDBC。
- Management Services & Utilities:系统管理和控制工具,包括备份恢复、MySQL 复制、集群等。
- Connection Pool:连接池,管理需要缓冲的资源,包括用户密码权限线程等。
- SQL Interface:接收用户的 SQL 命令,返回用户需要的查询结果。
- Parser:解析 SQL 语句。
- Optimizer:查询优化器。
- Cache and Buffer:查询缓存,除了行记录的缓存,还有表缓存、Key 缓存、权限缓存等。
- Pluggable Storage Engines:插件式存储引擎,提供 API 给服务层使用,与具体文件打交道。
查询执行过程
- 连接管理与线程池
客户端与 MySQL 服务器建立连接后,服务器会为每个客户端分配一个线程,通过线程池来管理这些连接。连接池负责管理和复用线程资源,提高系统效率。
- 查询缓存
MySQL 自带查询缓存模块,默认关闭。在 MySQL 5.8 中,查询缓存被移除。查询缓存要求 SQL 语句必须完全相同