收集下关系数据库处理亿万级别的数据
2017-01-06 19:57
239 查看
第一阶段: 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语句索引情况
----------------------------------------------------------------------------------------------------------------------------------
去掉表的所有索引
用批量进行插入
分表或者分区,减少每个表的数据总量
在某个表完全写完之后再建立索引
正确的指定索引字段
把需要用到的字段放到包含索引中(在返回的索引中就包含了一切)
查询的时候只返回所需的字段
相关文章推荐
- SQLServer中处理亿万级别的数据(历史数据)
- 关系数据库元数据处理类(一) 创建MSSQL元数据具体处理类
- SQLServer中处理亿万级别的数据
- SQLServer处理亿万级别的数据的优化措施
- Nosql 理解篇+实战篇 三 数据模型Ⅱ 聚合数据库关系处理及图数据库
- 利用VC和ADO接口编写一个dll模块实现对数据库数据的处理
- 初识jdbc对oracle数据库事务处理(隔离级别)
- 基于关系数据库系统链式存储的树型结构数据,求某结点下的子树所有结点算法(t-sql语言实现)
- 基于树型结构数据的关系数据库存储与网页显示的研究 推荐
- Nhibernate处理数据库字符串数据长度超过4000时会有问题
- nullable数据类型和c#2.0运算符“??”,数据库可能为空时候的一种处理办法
- 利用VC和ADO接口编写一个dll模块实现对数据库数据的处理
- 计算名更改后数据库数据复制出现的问题并处理
- 数据库分页处理(取出数据表中从M-N的记录)
- [学习笔记]二进制数据的处理(1) 普通二进制数据处理 A -------保存到数据库
- (原创)基于关系数据库系统链式存储的树型结构数据,求某结点下的子树所有结点算法(t-sql语言实现)
- 学习altas笔记[客户端JS和Altas环境初始化关系和DataTable返回数据的客户端处理]
- 在数据库频繁访问与本地处理数据之间找到一个平衡
- 工资类程序数据库处理讨论 [数据加载(二)]
- ASP中非数据库实现数据对象的定义及处理