欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > mysql整体架构

mysql整体架构

2025/9/27 7:09:06 来源:https://blog.csdn.net/m0_37607679/article/details/148492317  浏览:    关键词:mysql整体架构

MySQL 整体结构

一、整体架构概览

命中
未命中
客户端
连接器
查询缓存
返回结果
分析器
优化器
执行器
存储引擎

核心分层架构

层级组件核心功能
Server层连接器/查询缓存连接管理、权限验证、SQL解析、优化、执行
分析器/优化器/执行器内置函数、跨存储引擎功能(视图/存储过程/触发器)
存储引擎层InnoDB/MyISAM等数据存储与检索,支持插件式架构(默认InnoDB)

二、核心组件执行流程

1. 连接器

连接器(Connection)模块负责管理客户端与服务端之间的 TCP 连接

客户端 连接器 权限表 mysql -h$ip -P$port -u$user -p 验证身份(用户名+密码) 返回用户权限 建立连接会话 连接成功 Access denied alt [认证成功] [认证失败] 保持请求 返回结果 loop [连接保持] wait_timeout=28800秒(8小时) 长时间无请求 断开连接 连接已关闭 客户端 连接器 权限表

核心功能:

  1. 身份认证:验证用户名/密码
    • 错误返回:Access denied for user
  2. 权限管理:读取权限表,确定操作权限
  3. 连接管理
    • 空闲超时断开(wait_timeout控制,默认8小时)
    • 返回错误:Lost connection to MySQL server during query
-- 查看连接状态
SHOW PROCESSLIST;-- 查看超时设置
SHOW VARIABLES LIKE 'wait_timeout';
-- 详细一些的
SELECT * FROM information_schema.processlist;

2. 查询缓存(MySQL 5.7存在,8.0移除)

MySQL 在早期版本中提供了一个查询缓存机制,用于缓存查询结果,以提高重复查询的性能。

运作机制:

  • Key-Value结构:Key=SQL语句,Value=查询结果

  • 参数控制:

    SHOW VARIABLES LIKE 'query_cache%';  -- 查看缓存配置
    SET GLOBAL query_cache_type = DEMAND; -- 按需使用模式
    

手动指定缓存:

SELECT SQL_CACHE * FROM user WHERE id=1;

移除原因:

  • 缓存失效频繁:任何表更新都会使相关缓存失效
  • 命中率低下:OLTP系统更新频繁
  • 维护开销大:缓存管理消耗CPU资源

替代方案:应用层缓存(Redis/Memcached)或专用缓存数据库


3. 分析器

负责对 SQL 语句进行词法分析和语法分析,生成抽象语法树(AST)。

处理阶段:

  1. 词法分析
    • 识别关键词:SELECTFROMWHERE
    • 提取对象:表名user、列名id
    • information_schema获取元数据
  2. 语法分析
    • 验证SQL是否符合MySQL语法规则
    • 错误示例:ERROR 1064 (42000): You have an error...

4. 优化器

决定如何高效地执行查询,选择最优的执行计划。

原始SQL
优化器
可选方案
方案1:全表扫描
方案2:索引A
方案3:索引B
成本估算
选择最低成本方案

核心决策:

  • 索引选择策略(单表多索引场景)

  • 多表关联顺序(JOIN重排优化)

  • 示例优化场景:

    SELECT * FROM t1 JOIN t2 USING(ID) 
    WHERE t1.c=10 AND t2.d=20;
    
    • 方案1:t1(c=10) → t2(d=20)
    • 方案2:t2(d=20) → t1(c=10)

5. 执行器

按照优化器生成的执行计划,实际执行查询操作并返回结果。

执行流程:

优化器 执行器 存储引擎 Client 执行计划 权限验证 打开表 获取下一行 返回行数据 应用WHERE条件 保留匹配行 loop [行处理] 返回结果集 优化器 执行器 存储引擎 Client

权限验证时机:

  • 查询缓存命中:返回结果前验证
  • 未命中:执行器阶段验证
  • 触发器操作:运行时动态验证

三、存储引擎层

存储清清负责数据的实际存储和检索,定义了数据在磁盘上的组织形式及访问方式。

引擎适用场景特性限制
InnoDB事务处理 高并发写入ACID兼容 行级锁 外键支持相对较高内存占用
MyISAM读密集型应用 数据仓库高读取速度 全文索引无事务支持 表级锁
Memory临时数据 高速缓存内存存储 极快访问数据易丢失 表大小受限

生产建议:除非特殊需求,优先使用InnoDB

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词