mysql 存储及查询亿级数据

第一阶段:
1,一定要正确设计索引
2,一定要避免SQL语句全表扫描,所以SQL一定要走索引(如:一切的 > < != 等等之类的写法都会导致全表扫描)
3,一定要避免 limit 10000000,20 这样的查询
4,一定要避免 LEFT JOIN 之类的查询,不把这样的逻辑处理交给数据库
5,每个表索引不要建太多,大数据时会增加数据库的写入压力

第二阶段:

1,采用分表技术(大表分小表)

a)垂直分表:将部分字段分离出来,设计成分表,根据主表的主键关联
b)水平分表:将相同字段表中的记录按照某种Hash算法进行拆分多个分表

2,采用mysql分区技术(必须5.1版以上,此技术完全能够对抗Oracle),与水平分表有点类似,但是它是在逻辑层进行的水平分表

第三阶段(服务器方面):

1,采用memcached之类的内存对象缓存系统,减少数据库读取操作
2,采用主从数据库设计,分离数据库的读写压力
3,采用Squid之类的代理服务器和Web缓存服务器技术

PS:由于篇幅问题,我只简单说一些基本概念,其实里面每个知识点关系到的内容都很多。特别是第一阶段,很多工作几年的程序员,都不能完全理解。我觉得要真正理解索引,最好的办法就是在1000W-亿级以上的数据,进行测试SQL语句,再结合 explain 命令进行查看SQL语句索引情况。

posted on   离线  阅读(12619)  评论(0编辑  收藏  举报

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示