当前位置: 首页 > news >正文

MySQL 执行引擎:排序与临时表机制深度解析

在 MySQL 高性能开发中,ORDER BY(排序)和内部临时表(Internal Temporary Table)是两类最消耗 CPU 与 I/O 资源的算子。本文将从执行流程、内存分配策略及物理存储结构三个维度进行技术总结。

一、 排序机制:FileSort 算法剖析

当查询无法利用索引的有序性时,MySQL 优化器会启动FileSort。根据单行数据的大小,系统会选择不同的排序模式。

1. 全字段排序 (Full-row Sort)

sort_buffer空间充足且单行字节数小于max_length_for_sort_data时采用此模式。

  • 执行步骤
    1. 从磁盘读取符合WHERE条件的行。
    2. 提取SELECT指定的所有列和ORDER BY涉及的列。
    3. sort_buffer中进行排序。
    4. 排序完成后,直接返回结果集。
  • 内存代价:由于VARCHAR在此阶段会被展开为定义的最大长度,容易导致sort_buffer溢出。
2. RowID 排序 (Double-pass Sort)

当单行数据过大时(如包含TEXT或长VARCHAR),为节省缓冲区空间而采用。

  • 执行步骤
    1. 仅提取ORDER BY字段和主键 ID(RowID)放入sort_buffer
    2. 排序完成后,通过主键 ID回表读取SELECT的其他列。
  • 权衡:减少了排序阶段的内存压力,但增加了排序后的随机磁盘 I/O 成本。

二、 内部临时表机制

当执行DISTINCTGROUP BYUNION或某些多表关联(Join)时,执行引擎需要建立临时表来存储中间计算状态。

1. 存储引擎的演进
  • Memory 存储引擎:MySQL 8.0 之前默认使用。所有数据存在内存,不支持BLOB/TEXT字段,且VARCHAR会被转换为定长 CHAR存储。
  • TempTable 存储引擎:MySQL 8.0 引入的默认引擎。支持变长字段存储,提高了内存利用率。
2. 内存到磁盘的退化触发

当临时表的大小超过tmp_table_sizemax_heap_table_size的阈值时,MySQL 会将内存临时表转换为磁盘临时表(使用InnoDBMyISAM引擎),此过程涉及大量磁盘写 I/O。

三、 内存分配中的定长处理逻辑

在排序缓冲区或内部临时表中,MySQL 对VARCHAR类型的处理与磁盘存储存在显著差异。

1. VARCHAR 的“膨胀”现象

为了实现O(1)O(1)O(1)的随机访问(Random Access),执行引擎在内存中对VARCHAR(n)采取定长排布。

  • 示例:定义VARCHAR(255),字符集utf8mb4
  • 物理存储:存入"abc"仅占 3 字节 + 长度前缀。
  • 排序/临时表内存:分配255×4=1020255 \times 4 = 1020255×4=1020字节。
2. 影响分析
  1. 排序效率:单行占用的内存越大,sort_buffer容纳的行数越少。
  2. 磁盘归并:当行数超出限制,会产生Sort_merge_passes,即将中间结果写入磁盘临时文件进行归并排序。
  3. 索引失效:即使定义了前缀索引,也无法在排序阶段利用索引。
http://www.jsqmd.com/news/726164/

相关文章:

  • 如何精确计算3D模型体积?这个开源工具让你告别打印材料浪费
  • 群晖NAS百度网盘套件完整安装与配置指南
  • 手机号逆向查询QQ号:3分钟快速找回遗忘账号的Python工具
  • 智能游戏性能优化方案:DLSS Swapper三步实现性能飞跃终极指南
  • 2026年4月四川H型钢/角钢/焊管/螺旋钢管/钢板厂家哪家好,选四川铁沁钢铁 - 2026年企业推荐榜
  • 2026年河南全自动包装机、物料专用包装机、辅助输送设备采购指南:如何找到官方正规供应商 - 企业名录优选推荐
  • 3步实现Cesium风场可视化:让大气流动在三维地球中动起来
  • 终极解决方案:Mitsuba-Blender插件让Blender免费实现物理级渲染
  • 敏感肌防晒霜推荐,绝绝子!这5款防晒告别包公脸 - 全网最美
  • 2026年优选:揭秘知名密封塑料包装罐厂家背后的故事 - GrowthUME
  • Playwright UI Mode真香!但我劝你先看完这份VSCode插件配置与调试避坑指南
  • 2026年国内丙烯酸面漆主流厂家权威测评榜单 - 奔跑123
  • 2026济南婚纱摄影甄选指南:8家优质机构全解析,备婚选店不迷茫 - 江湖评测
  • 2026年京东代运营(节日限定品类)排名前五专业深度测评权威发布! - 电商资讯
  • Windows平台终极APK安装解决方案:告别模拟器,拥抱原生体验
  • Windows DLL注入新选择:Xenos如何让复杂操作变得简单
  • 2026年蜂蜜瓶密封塑料瓶源头工厂,电话等你拿! - GrowthUME
  • 2026年河南全自动包装机、物料专用包装机械行业深度横评与选购指南 - 企业名录优选推荐
  • 2026上海婚纱照排名新鲜出炉|五星三甲领衔,全品类实测甄选指南 - 江湖评测
  • 如何高效使用Axure-CN:3步完成Axure RP中文界面汉化
  • 2026年河南全自动包装机、物料专用包装与辅助输送设备行业深度横评:郑州凯宇包装设备官方联系与选型避坑指南 - 企业名录优选推荐
  • 2026年河南全自动包装机深度横评:从物料专用到智能集成的产线升级指南 - 企业名录优选推荐
  • 绍兴二手车品牌亲测对比,口碑分享复盘 - 花开富贵112
  • 3分钟掌握抖音内容保存神器:douyin-downloader完全指南
  • 《给家长的180个家庭教育问答》
  • 2026口碑最佳西南防火隔断横评:5款成都四川西安等地公司供应商源头工厂实力单品精准评测 - 十大品牌榜
  • 台州鸿洋环保科:靠谱的台州酒店厨房排烟公司 - LYL仔仔
  • 2026年最新西安工伤赔偿律师排行:基于实战成果的客观对比 - 奔跑123
  • 2026年长沙写真靠谱推荐:个人写真、情侣闺蜜、男士人像怎么选不踩坑? - 麦克杰
  • 2026年,探秘传统地道霞浦美食店铺,解锁地道海鲜美味新体验! - GrowthUME