news 2026/6/12 7:55:19

MySQL千万级表的查询优化

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL千万级表的查询优化

遇到这个问题,不能上来就要分库分表。

这样就是把最贵的方案排在了最前面。千万级这个量级, InnoDB的B+树还远没到极限。大部分慢查询不 是因为数据多,是因为查的方式有问题。

expalin执行计划分析

重点看type和rows。

  • type是ALL那么就是走了全表扫描。tpye是index是全索引扫描;较好的是ref或range,说明走了索引且只扫描了需要的部分。
  • rows估算扫描行数。同样的sql,没加索引前扫描了几百万,加了索引rows变成了几百。
  • extra,using fileSort性能差,它表示在内存中进行二次排序。

Explain Analyze

如果expalin看不出来什么,可以使用Explain Analyze,可以看到具体耗时和执行过程。

Select * 大表性能杀手

产生回表,大表中查出来的数据主键大概率物理页 不连续,所以这样会导致大量磁盘IO。

这个时候,使用覆盖索引,避免回表,性能提升好几倍!

深分页问题

limit m,n ; mysql执行方式是先扫描m行,然后丢弃m-n行,返回n行。前面m-n行的IO全是浪费。

优化方案是使用游标,减少返回行数;避免回表,减少IO次数

冷热归档和数据分批处理

最直接的做法是按时间归档。把三个月前的数据搬 到归档表,主表只留近期数据。搬完之后主表从两千万行瞬间缩到几百万,索引重建一遍,B+树层高可能直接降一级。

定时任务

搬迁可以用定时任务,每天凌晨跑一批:

分批操作很重要。一次性 DELETE几百万行会产 生巨大的事务日志,锁表时间长,从库同步也会延 迟。每次 LIMIT 10000,循环跑到没数据为止。

归档之后,偶尔需要查历史数据的需求,直接查归档表,不影响主表性能。

分库分表

分库分表排在最后面,不是排在最前面

索引调过了、查询改过了、冷数据归档了、深度分 页优化了、COUNT(*)也缓存了—做到这一步还 是慢,才轮到分区表或者分库分表。

分库分表的工程代价很实在:跨分片 JOIN 做不 了、分布式事务要上Saga或2PC、全局ID要换 Snowflake、数据迁移要双写方案。千万级这个量 级,绝大部分系统在前面几步就能解决问题,根本 走不到需要分表的那一步。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/12 7:54:48

MBHBs非热辐射机制与同步辐射模型解析

1. MBHBs中的非热辐射机制解析超大质量双黑洞系统(MBHBs)作为宇宙中最极端的天体物理实验室之一,其非热辐射过程一直是高能天体物理研究的核心课题。这类系统在合并过程中释放的巨大能量,主要通过磁重联和相对论性喷流等机制转化为…

作者头像 李华
网站建设 2026/6/12 7:52:55

WeMod完整功能免费解锁终极指南:Wand-Enhancer快速配置全攻略

WeMod完整功能免费解锁终极指南:Wand-Enhancer快速配置全攻略 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer 还在为WeMod的高级功能需要付费…

作者头像 李华
网站建设 2026/6/12 7:52:54

标书智能生成:AI一键写标书,废标率直降90%

一份高质量的标书,传统制作需要3-7天。 “标书智能生成”,让AI帮你3小时完成初稿,自动审校防废标,中标率大幅提升。 一、什么是标书智能生成? “标书智能生成”是指利用人工智能技术,自动完成从招标文件…

作者头像 李华
网站建设 2026/6/12 7:52:23

EMC整改血泪史:都是地线惹的祸!用0欧电阻、磁珠还是直接连?深入对比四种隔离数字地与模拟地的方案

EMC整改实战:数字地与模拟地隔离方案深度解析当ADC采样值出现无规律跳动、无线模块通信距离骤减时,许多硬件工程师的第一反应往往是检查代码和电源。但真正的问题可能隐藏在那条不起眼的地线走线上——数字噪声通过共地路径污染了敏感的模拟电路。本文将…

作者头像 李华