亿级数据优化
情况简介
用户分析系统以用户的心跳数据为依据,统计查询用户的各种情况。心跳数据很多,经过去重,去无效,数据量还是在2亿/月的水平。普通的查询在这个量级的数据库上根本查不出来,为此,分表分库、优化查询、多线程查询就很有必要了。
分表分库
对于大数据查询,我的第一反应就是分表分库,我之前对分表分库已经听的很多了,但自己之前并没有真的做过分表分库。我经常说分表分库,经常听分表分库,对分表分库的技术充满了兴趣,所以这次,我的意见就是上分表分库。分库分表就是按一定规则把一张大表的数据切成多个小表,查询时分组查询多个小表再把结果集集合起来。
分表其实只是对数据表的数据量的减少。比如一个1亿的表,经过分表后,会分成4个千万级别的表,对于查询sql,会在千万级别的表中执行,并把结果合并起来。在亿级查询的时间比千万级会提高很多,这个就是分表的作用。但是分表仅仅是数据量的减少,并没有去解决查询慢的问题,如果一个查询慢,及时使用分表,它还是很慢。
我们最终用mycat这个数据库中间件来进行分库分表,mycat启动后,会开启一个模拟mysql的服务端,对于插入的sql,它可以按规则自主放入对应的表中,对应查询的sql,它会自动的去各个数据库查询,并自动整合结果。
优化查询
经过对数据库的了解后,我发现,数据库查询的最该优化的地方还是数据库优化。首先就是
加索引
索引要加给需要查询的列,对于