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

MySQL 在执行深度分页时,绝不会一次性将行数据加载到内存中

MySQL 在执行LIMIT 1000000, 10时,绝不会一次性将前 100 万行数据加载到内存中。它的执行机制是典型的**“流式逐行处理”**,内存占用是固定且可控的,与offset大小无关。

下面从 InnoDB 存储引擎的执行细节为你拆解真实过程:


🔍 实际执行过程(非内存加载,而是流式扫描)

  1. 按页读取,非按行加载
    InnoDB 数据存储在 16KB 的 Page 中。MySQL 会从索引/数据页的起始位置开始,逐页加载到 Buffer Pool 或执行缓冲区,而不是把 100 万行一次性塞进内存。

  2. 逐行解析 + 条件判断 + 丢弃
    对页中的每一行,执行引擎会:

    • 解析行记录结构
    • 评估WHERE条件(是否匹配)
    • 参与ORDER BY排序比较(如有)
    • 判断当前行序号是否< offset
    • 若满足跳过条件,直接丢弃,不进入结果集,也不长期驻留内存
  3. 仅保留目标行
    当扫描到第1000001行时,才开始将后续 10 行组装成结果集返回给客户端。

  4. 内存使用上限固定
    整个过程使用的内存主要来自几个固定参数:

    • read_buffer_size/read_rnd_buffer_size(顺序/随机读缓冲)
    • sort_buffer_size(排序临时缓冲)
    • tmp_table_size/max_heap_table_size(临时表)
      这些缓冲区大小通常在几 MB 到几十 MB,与 offset 无关

📉 为什么“不占内存”却依然极慢?

深度分页的性能杀手不是内存,而是以下三项硬成本:

成本类型具体表现影响
🔹 I/O 成本即使数据在 Buffer Pool 中,CPU 仍需从内存页中逐行解析;若未缓存,则触发大量磁盘随机/顺序读取磁盘 IOPS 飙升,响应时间线性增长
🔹 CPU 成本解析 100 万行记录头、解码变长字段、执行 WHERE 过滤、排序比较,消耗大量 CPU 周期查询线程长时间占用 CPU,影响并发
🔹 Buffer Pool 污染大量无关数据页被加载进内存,挤占热点页缓存位置,导致后续查询缓存命中率下降拖慢整个实例的其他查询
🔹 排序放大效应若带ORDER BY,MySQL 需对过滤后的中间结果集排序。offset 越大,排序数据集越大,可能触发filesort或落盘临时表内存/磁盘开销呈指数级上升

✅ 核心结论

LIMIT offset, size的瓶颈是“无效扫描的 I/O + CPU 成本”,而非“内存占用”。
MySQL 采用流式处理,内存使用恒定,但扫描行数、回表次数、排序开销会随 offset 线性/指数增长,这才是性能断崖的根源。

这也正是工业界优化深度分页的底层逻辑:

  • 游标分页:直接定位起始点,扫描行数从O(offset+size)降至O(size)
  • 延迟关联:子查询仅扫描索引(不触发表数据回表),大幅降低 I/O 与 CPU 解析成本
  • 覆盖索引:彻底消除回表,让扫描成本趋近于纯内存索引遍历

如果你在实际业务中遇到具体慢查询,可以提供EXPLAIN执行计划,我可以帮你精准定位是回表过多、排序开销大,还是 Buffer Pool 命中问题,并给出针对性 SQL 改造方案。

http://www.jsqmd.com/news/840112/

相关文章:

  • 2026年4月公交站台广告价格推荐分析,电梯框架广告/电梯视频广告/高铁广告/电梯门贴广告,公交站台广告公司推荐分析 - 品牌推荐师
  • Taotoken API密钥的精细化管理与审计日志功能在实际运营中的作用
  • 四川市政管道CCTV检测哪家强?2026年非开挖修复行业优选服务商深度解析 - 深度智识库
  • 深入浅出:使用 Gunicorn + Nginx + Docker 将 Django 项目部署到云服务器
  • 软件测试实验六
  • ARM+FPGA异构计算:软硬件协同定制与生态共建实践指南
  • 五相同步电机模型预测控制:原理、算法设计与仿真实现
  • claude windows安装
  • 从选型到图传:ESP32-S系列USB摄像头实战开发指南
  • AI工作流编排框架aiflows:构建复杂AI应用的模块化解决方案
  • EnvScaler:AI/ML环境即代码,解决“在我机器上能跑”的部署难题
  • 10分钟精通DeepMosaics:智能图像隐私保护与修复实战指南
  • 终极微信好友检测指南:3分钟找出谁删了你
  • 2026年四川市政管道紫外光固化厂家推荐——专业实力与本土标杆解析 - 深度智识库
  • ENVI遥感图像处理保姆级教程:从打开TM影像到彩色合成(附实验数据)
  • PyFluent完全指南:用Python自动化CFD仿真的终极解决方案
  • 为OpenClaw智能体工具配置Taotoken作为后端模型服务
  • 3D视频转2D终极指南:用VR-Reversal解锁沉浸式观影新体验
  • 学妹问哪个免费降AI软件好用?这款论文AI率从78%降到4.5%
  • 石家庄漏水检测2026指南快速解决家庭漏水困扰 - 品牌企业推荐师(官方)
  • RK3568 ARM核心板高精度NTP时间同步方案:Chrony配置与工业应用实践
  • 初创公司如何利用Taotoken的Token Plan实现AI应用成本可控
  • LabVIEW 开发NI‑DAQmx 可重触发
  • 深圳龙岗跨境财税服务指南:合规需求与靠谱机构解析 - 资讯速览
  • 别再为地图边界发愁了!Cartopy绘制中国区域气象图的正确姿势与避坑指南
  • 体验 Taotoken 官方折扣价带来的模型调用成本下降
  • Java学习的三大阶段详解
  • 基于树莓派与传感器实现智能门情景音效触发系统
  • 5分钟掌握全平台炫酷抽奖:Magpie-LuckyDraw开源项目深度解析
  • 革命性视频转3D动作捕捉工具:从普通视频到专业级BVH文件的突破性解决方案