模块一:MySQL 基础架构与运行机制


一、客户端 / 服务器模型

MySQL 采用典型的 C/S 架构:

客户端 → 连接层 → 服务层 → 存储引擎层 → 文件系统

逻辑分层:

  1. 连接层(Connection Layer)
  2. SQL层(Server Layer)
  3. 存储引擎层(Engine Layer)

二、连接过程

客户端发起连接时流程:

  1. 建立网络连接
  2. 认证校验
  3. 权限检查
  4. 分配线程
  5. 等待执行SQL

支持的连接方式:

  • TCP/IP
  • Unix 域套接字
  • 命名管道(Windows)
  • 共享内存(Windows)

查看当前连接:

1
SHOW PROCESSLIST;

查看最大连接数:

1
SHOW VARIABLES LIKE 'max_connections';

三、线程管理机制

MySQL 每个连接默认对应一个线程。

模型:

连接 = 线程 = 会话

问题:

  • 高并发下线程创建/销毁开销大
  • 上下文切换成本高

解决方案:

  • 线程池(MySQL Enterprise / 第三方插件)

查看当前线程缓存:

1
SHOW VARIABLES LIKE 'thread_cache_size';

四、服务器处理请求流程

完整SQL执行路径:

连接管理 → 解析器 → 预处理器 → 优化器 → 执行器 → 存储引擎

详细说明:

  1. 解析器(Parser)
    • 词法分析
    • 语法分析
  2. 预处理器
    • 表名校验
    • 字段校验
  3. 优化器
    • 生成执行计划
  4. 执行器
    • 调用存储引擎接口
  5. 存储引擎
    • 读取数据页

五、查询缓存(MySQL 8.0 已移除)

MySQL 5.7 及以前:

  • 查询缓存基于 SQL 文本完全匹配
  • 任何表数据变更都会导致缓存失效

MySQL 8.0:

  • 完全移除 Query Cache
  • 原因:锁竞争严重,收益低

六、字符集与比较规则

1️⃣ 字符集

常见字符集:

  • utf8(最多3字节)
  • utf8mb4(最多4字节,推荐)

查看数据库字符集:

1
SHOW VARIABLES LIKE 'character_set%';

2️⃣ 排序规则(Collation)

排序规则决定:

  • 比较方式
  • 是否区分大小写
  • 是否区分重音

查看排序规则:

1
SHOW VARIABLES LIKE 'collation%';

常见:

  • utf8mb4_general_ci
  • utf8mb4_unicode_ci
  • utf8mb4_0900_ai_ci(8.0默认)

七、MySQL 整体执行流程总结

客户端发送 SQL 后:

  1. 建立连接
  2. 分配线程
  3. SQL 解析
  4. 生成执行计划
  5. 执行器调用存储引擎
  6. 返回结果

核心理解:

  • Server层负责"逻辑"
  • 存储引擎负责"数据"
  • 优化器决定"怎么查"

本章核心重点

✔ 理解 MySQL 分层架构
✔ 理解 SQL 执行完整流程
✔ 理解 8.0 移除查询缓存原因
✔ 理解字符集与排序规则差异


下一篇:InnoDB 存储引擎核心结构