数据量大的表的分表方案 以及 跨(同类型的)表查询遇上分组时需要注意的点

最近着手对数据量比较大的表的改善工作。当一张表的数据量很大,并且在定时或实时的增加数据时,这时候就需要考虑表的容量,因为一张表的数据不可能无限大,所以考虑分表就迫在眉睫~~

 

解决方案:

1)结合表内数据的Insert频率,大概计算下表数据的大小。规划每张表最大的数据量,考虑按年或月或天分表,表名基本相同,以时间字符串作为后缀(如:表名_yyyy,表名_yyyyMM,表名_yyyyMMdd等);

2)假如最小维度的表的每条记录是按分钟入的(总之不是天),时间字段为“yyyyMMdd”格式(即“天”)。那么要求出一段时间的(哪天到哪天)按天分组的统计结果,直接查询该最小维度的表即可。

若该表是按天分开存储,需考虑跨表的情形,关于跨表的思想见我前一篇文章;

3)假如需要查询一段时间(哪月到哪月)的按“月”分组统计的情况,则不再建议直接查询最小维度的表,因为既要考虑分表,而且union all的表的数量太多,造成卡死,效率上不太现实。

——解决:定时任务每月初去统计上一个月的总体情况,时间字段为"yyyyMM"格式(即“月”),如最小维度的表是按月存储的,则读取上一个月的汇总情况,成为一条记录,该条记录即是上一个月的总体情况,专门存入一张如“表名_month”的表中,此时,不必实时去最小维度的表汇总,直接读取该month表就行啦;

4)假如需要查询一段时间(哪年到哪年)的按“年”分组统计的情况,同上,可在"表名_month"表中,在月维度的数据基础上汇总,存储在"表名_year"表中,此时这张year的表的每一条记录代表一个“年”的总体情况,时间字段为"yyyy"格式(即“年”),此时直接读取"表名_year"表即可。

5)在按月和按年定时汇总数据到相应维度的表的同时,也要建立下一个月的月表或下一年的年表。

 

接下来要讲的是同类型的表遇上分组时需要注意的地方,现假设有2张表itm_test和itm_test2,他们的时间字段为app,按探讨的背景,这2张表的app字段的值肯定是不会重复的。。

这2张表的数据情况如下:

<

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值