为了提升Hologres的整体性能,针对营销活动分析数仓主要做了哪些优化策略?
设置distribution key对于count(distinct user_id)的情况将user_id设置为distribution key,在Hologres中每一个shard做count distinct,避免大量的数据shuffle,大大提升查询性能 尽量减少count distinct次数:通过多层GROUPBY操作转换SQL减少count distinct成本;
shard prunning:在一些场景中,查询会指定某个表的PK中的一些key进行查询,如果将这些场景的key组合设置为distribution key,可以在处理查询的时候就确定本次查询会命中哪几个shard,减少RPC请求数,对于高QPS场景至关重要。生成最优的plan:营销活动分析有基于汇总数据的点查或者范围查询,有基于原始数据的 OLAP查询,还有单表的聚合之后取topN的查询,对于不同的查询类型,Hologers能够根 据收集的统计信息,生成最优的执行计划,保证查询的QPS和Latency
写入优化:营销活动分析的写入都是基于列存表UPDATE操作,该操作在Hologres中会首 先根据指定的pk找到对应的uniqueid,然后根据uniqueid找到对应的记录标记删除,然后再查询一条新记录,这种情况如果能够设置一个递增的segmentkey,查询的时候就可 以根据segmentkey快速定位到文件,提升根据PK定位到记录的速度,提升写入性能, 营销活动分析系统压测时写入峰值可以达到800万/s的更新
小文件合并:某些写入不是很频繁的表因为一段时间更新的key比较固定,这导致 memory table flush的时候是一个比较小的文件,而Hologres默认的compaction策略并 没有对这些文件做compaction,导致存在比较多的小文件,通过深入优化compaction参 数,增加compaction的频率,减少小文件,对于查询性能有较明显的提升
以上内容摘自《阿里云实时数仓Hologres最佳实践合集》电子书,点击https://developer.aliyun.com/topic/download?id=996 可下载完整版
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
本技术圈将为大家分析有关阿里云产品Hologres的最新产品动态、技术解读等,也欢迎大家加入钉钉群--实时数仓Hologres交流群32314975