一个技术问题和大家交流一下,求高手解答:
有一个需求,目前想到用数据库表来保存,数据量较大一天的数据量在1千万左右
复合主键
time(bigint) + key1(VARCHAR) + key2 (VARCHAR) +key3(INT) + key4(BIGINT) 以上这些构成复成主键字段
+其它指标字段
按时间保存,一天的数据量在一千万左右,要求保存三个月左右的历史数据,现在担心数据量是否太大,而导致后面查询无法进行。
按90天计,大概9亿条数据左右。
后面业务可能需要进行sum求和之类的耗时操作
以上的数据初步想用数据库表保存,但不限于用表保存,请大家帮忙看看如何保存会比较好。
------解决方案--------------------
这个数据量是比较大,但也不是少见。
关键看你的需求如何,比如:你说要sum,按照什么条件sum?
用的什么库?除了用表保存,你有更好的选择吗?
------解决方案--------------------
time保存的是什么类型的日期格式呢?
可以考虑rang(月)-rang(天)复合分区,这样利用分区消除的话,就相当于直接操作一天的数据了。
如果只有1个时间字段的话,可以考虑虚拟列。
------解决方案--------------------
具体分区策略和分区粒度,直接和你的具体SQL相关。
例如:SQL条件是什么,条件的时间跨度是多少等。
像楼主说的,1000万条数据分组很慢,关键看慢在了哪里。
------解决方案--------------------
这种就是大消耗IO,存储性能有多好,这种查询就有多快。