【StarRocks版本】 2.4.1
【详述】
方案未确定,寻找单表查询的可行性。目前场景需要能做到实时查询,利用flink打宽表写入starrocks,一天产生的数据量级大概2~3M。
创建主键模型,主键为日期,团队权限,分类,产品维度,按天分区,按团队权限hash分桶(假设数据均匀的情况)
维度:日期(可自定义范围),大部门权限a,团队权限b,个人权限c,(关系:a与b多对多,b与c多对多,a与c一对多)产品,产品分类,产品品牌,产品上架时间等等…
指标:产品销量、产品销售额、页面浏览量、产品转化率等等…
值得注意的是:产品可以挂到不同产品分类上,因此,如果单纯按照个人权限维度去汇总指标,那就需要先对产品维度去重,再去汇总指标。(上述有多种同样的场景,只举一个例子说明)
目前线上3台机器,配置相同 3FE 3BE 16C/64G(机器不能再升级,成本大)
要求查询响应在3s内。
【测试情况】
3台测试机器:3FE3BE 机器配置:8C/14G
利用Flink Datagen connector制造虚拟数据灌入starrocks,未添加任何索引,只取了几个维度指标做查询查看情况。
SELECT 个人权限,count(产品维度),sum(a),sum(b),sum(c) from (
SELECT 个人权限,产品维度,sum(`销量`) as a,sum(`销售额`) as b,min(`页面浏览量`) as `c` from Table_Test
WHERE `日期` BETWEEN '2023-08-03' and '2023-09-03' group by 产品维度,个人权限) d group by [个人权限];
一个月查询耗时13~15s。
【问题概要】
1.时间范围自定义,最大可到一年,查询的数据量级达到10亿,若缩减查询范围,三个月的量也近2亿;
2.维度多,有10个,统计指标近40个;
3.需要去重汇总
【疑问】
对于目前的starrocks版本,是否不太适用于多维度聚合查询的场景?或者有其他好的方案?
我看3.0以上版本,主键模型解耦了主键列和排序列,若将数据维度设置为排序列,是否代表能命中索引加速查询?排序列能设置多少个?排序列过多是否会影响写入或者引发其他的隐患?