模块一:MySQL 基础架构与运行机制
一、客户端 / 服务器模型
MySQL 采用典型的 C/S 架构:
客户端 → 连接层 → 服务层 → 存储引擎层 → 文件系统
逻辑分层:
- 连接层(Connection Layer)
- SQL层(Server Layer)
- 存储引擎层(Engine Layer)
二、连接过程
客户端发起连接时流程:
- 建立网络连接
- 认证校验
- 权限检查
- 分配线程
- 等待执行SQL
支持的连接方式:
- TCP/IP
- Unix 域套接字
- 命名管道(Windows)
- 共享内存(Windows)
查看当前连接:
| |
查看最大连接数:
| |
三、线程管理机制
MySQL 每个连接默认对应一个线程。
模型:
连接 = 线程 = 会话
问题:
- 高并发下线程创建/销毁开销大
- 上下文切换成本高
解决方案:
- 线程池(MySQL Enterprise / 第三方插件)
查看当前线程缓存:
| |
四、服务器处理请求流程
完整SQL执行路径:
连接管理 → 解析器 → 预处理器 → 优化器 → 执行器 → 存储引擎
详细说明:
- 解析器(Parser)
- 词法分析
- 语法分析
- 预处理器
- 表名校验
- 字段校验
- 优化器
- 生成执行计划
- 执行器
- 调用存储引擎接口
- 存储引擎
- 读取数据页
五、查询缓存(MySQL 8.0 已移除)
MySQL 5.7 及以前:
- 查询缓存基于 SQL 文本完全匹配
- 任何表数据变更都会导致缓存失效
MySQL 8.0:
- 完全移除 Query Cache
- 原因:锁竞争严重,收益低
六、字符集与比较规则
1️⃣ 字符集
常见字符集:
- utf8(最多3字节)
- utf8mb4(最多4字节,推荐)
查看数据库字符集:
| |
2️⃣ 排序规则(Collation)
排序规则决定:
- 比较方式
- 是否区分大小写
- 是否区分重音
查看排序规则:
| |
常见:
- utf8mb4_general_ci
- utf8mb4_unicode_ci
- utf8mb4_0900_ai_ci(8.0默认)
七、MySQL 整体执行流程总结
客户端发送 SQL 后:
- 建立连接
- 分配线程
- SQL 解析
- 生成执行计划
- 执行器调用存储引擎
- 返回结果
核心理解:
- Server层负责"逻辑"
- 存储引擎负责"数据"
- 优化器决定"怎么查"
本章核心重点
✔ 理解 MySQL 分层架构
✔ 理解 SQL 执行完整流程
✔ 理解 8.0 移除查询缓存原因
✔ 理解字符集与排序规则差异
下一篇:InnoDB 存储引擎核心结构