作业帮基于 StarRocks 画像系统的设计及优化实践( 三 )


结论4:测试4分析fragment1/2实际并行度计算公式如下 。 适当增加tablet个数【partition、bucket】和execinstancenum可以加快查询速度 。 此加速过程会作用于结论1中全部耗时点 。
当tablet个数【不含副本】小于parallel_fragment_exec_instance_num*BE个数时取tablet个数
当tablet个数【不含副本】大于parallel_fragment_exec_instance_num*BE个数时取exec_instance_num*BE个数
(3)kv+Agg测试
此部分主要用于存储标签枚举值较少的用户集合 , 所以数据量并不多 , 基本1s内返回 。
根据查询模板猜测当数据量较大时可能的性能瓶颈点主要:
Scan过程[OLAP_SCAN_NODE]:bitmap对象反序列化和SegmentRead过程 。 可考虑用enable_bitmap_union_disk_format_with_set优化 。
bitmap_union算子 , 如果按照上边优化方案调整bitmap元素分布就需要在表中增加更多行的数据性能未必会好 。 需要测试看数据后选择平衡 。
(4)补充说明
遇到的坑:
作业帮基于 StarRocks 画像系统的设计及优化实践】查询bitmap_or(to_bitmap(字段A) , to_bitmap(字段B)) , 字段A/B有空值时计算错误 。 通过ifnull(to_bitmap(字段名),bitmap_empty())解决 。