MySQL 核心组件详解

分层结构

组件层级 核心功能 组件
连接层 管理连接、身份验证 连接器、身份验证
服务层 SQL 解析、优化、执行 SQL接口、解析器查询优化器、查询缓存、执行器
存储引擎层 数据存储与索引管理 InnoDBMyISAM
物理存储层 文件系统交互 表结构、数据、日志

组件交互流程图

graph LR A[客户端]--身份验证--> B[连接器]--SQL接口--> C[解析器] C--> D[优化器] --查询缓存-->E1{命中?} E1--是-->A[客户端] E1--否--> E3[执行器] E3 --> F[存储引擎] F --> G[InnoDB]-->I[物理文件] F --> H[MyISAM]-->I[物理文件]

一、连接层

连接器 (Client Connectors)

功能:管理客户端连接请求,支持多种编程语言(Java、Python、.NET 等)通过 API 建立连接。

行为:为每个连接请求分配独立线程(或使用线程池复用)。

通过 SHOW PROCESSLIST 查看活动连接。

身份验证 (Authentication)

流程:验证客户端用户名、IP、密码,并检查用户权限(如数据库/表的操作权限)。

命令示例

mysql -h$ip -P$port -u$user -p

二、服务层 (Server Layer)

SQL 接口 (SQL Interface)

作用:接收并执行客户端 SQL 命令(如 DML、DDL、存储过程),返回查询结果。

解析器 (Parser)

流程:将 SQL 解析为“解析树”,检查语法合法性(如关键词拼写错误)。

查询优化器 (Optimizer)

功能:将解析树转化为执行计划,优化查询策略(如选择索引、调整 JOIN 顺序)。

示例

SELECT uid, name FROM user WHERE gender=1;  
-- 优化器决定先过滤 gender=1,再投影 uid 和 name  
查询缓存 (Query Cache)

机制:缓存命中查询结果,直接返回缓存数据(注:MySQL 8.0 已移除该功能)。

执行器 (Executor)

行为:调用存储引擎接口执行优化后的查询计划,返回最终结果集。


三、存储引擎层 (Storage Engines)

插件式引擎架构

支持 InnoDB、MyISAM 等引擎,通过统一 API 与存储引擎交互,屏蔽底层差异。

InnoDB
  • 支持事务(ACID)、行级锁、外键约束。
  • 数据存储文件为 .ibd(表空间文件,含结构、数据和索引)。

参数示例

innodb_file_per_table = ON  -- 每表独立表空间  
MyISAM
  • 表级锁、不支持事务,适用于读密集型场景。
  • 数据存储文件为 .MYD(数据)、.MYI(索引)、.frm(表结构)。

四、物理存储层

文件系统交互
  • 文件类型
    • 表结构文件(.frm.sdi)。
    • 日志文件(如 binlogredo logundo log)。
  • 存储路径:通过 datadir 参数指定数据目录。
posted @ 2025-03-19 08:19  HoraceXie  阅读(46)  评论(0)    收藏  举报