这个问题够写一篇分析报告了。
1. 首先每天三百万数据,这张表再大,最后都会撑不住,横向分表是自然的事。估计最先想到的是按时间来分吧。
2. 查询速度的问题可使用的技术方案有很多,但先要做的是对业务查询的分析。找出瓶颈,才能有的放矢。试列举几种:
i 缓存,已查过的放内存,没查过的才查
ii 索引,合理利用索引,甚至构造自己的索引表
ii 并行,可以多线程/多进程甚至分布式
iV 分离读写,使用数据仓库,专门面对查询
V 预处理,我先查,等你来问的时候,我只是把结果告诉你,能不快么?
最后一个方针:与其榨出每条查询语句的效率,不如从架构上总体设计,这才是正确的展开方式。
按日期分表呗,我看查询的时候都是按日期查询的
关键字段建索引,显示数据时分页,每次查询只查询当页的数据
用索引或者分表来查询
建议分表做,还有就是优化sql语句 尽量不要让字段出现null存储,sql语句里有时间大小写比对,建议时间值用int类型存储,时间即时间戳。
分区应该也行吧
分区表,加适当的索引
1,建议分表做,还有就是优化sql语句 尽量不要让字段出现null存储,sql语句里有时间大小写比对,建议时间值用int类型存储,时间即时间戳。
2,用索引或者分表来查询
3,按日期分表呗,我看查询的时候都是按日期查询的
我知道,但是没写过,不知是否可行?首先哪,数据千万级,看您的查询条件是instationdate等于具体日期,此时哪,后边的筛选条件就先不要了,先把
数据从数据库里拿出来(要知道筛选条件越多,查询效率越慢),丢到mogoDb里面处理,支持条件筛选;或直接java里面处理,不知会不会内存溢出哪。
哈哈,有用的话给我点C币吧。
如果做成常用查询功能,建议使用搜索引擎,比如开源的es,这样就可以将多个字段作为检索条件,方便后续扩展。
按数据的日期分表作为缓冲表,再进行并行查询
开源的es,这样就可以将多个字段作为检索条件,方便后续扩展
分而治之在,,分库,,分表,分成小块,,逐个筛选,汇总,,,
这样可以多线程,甚至多个服务器来筛选,,
我有两篇博客都是处理百万级和千万级的,你可以看一下。
http://blog.csdn.net/en_joker/article/details/78481007
http://blog.csdn.net/en_joker/article/details/78161898
不过,按照你这个量,我建议用其他方法替代,比如solr,es,或者mongodb。