【已解决】doris2.0.x unique模型宽表,多字段group by,order by 怎么性能优化?

Viewed 95

doris2.0.x unique模型宽表,多字段group by,order by 怎么性能优化?
当前除了建Bloom Filter索引,bitmap 索引 是否还有其他的优化办法?

1 Answers

可以参考如下几种性能优化方式:

1、优化数据存储布局:通过合理地设计分桶(BUCKETS)和分布键(DISTRIBUTED BY),可以减少查询时需要扫描的数据量,从而提升性能;建议是1个bucket分布1~10G的数据量。
2、使用前缀索引:对于 Unique 模型,如果 group by 和 order by 字段是复合键的前缀,可以使用前缀索引来加速查询: 排序键与前缀索引
3、开启 Merge-on-Write 特性:对于 Unique 模型,开启 Merge-on-Write 相对MOR查询性能会有较大提升:写时合并
4、调整查询语句:优化查询中的 SQL 语句,例如只选择必要的列,避免使用 SELECT *,减少不必要的数据传输。
5、使用物化视图:对于unique表可以创建rollup或物化视图来调整字段顺序加速前缀效应:同步物化视图
6、调整内存和资源分配:合理配置 Doris 的内存和资源,确保查询时有足够的资源来执行计算和排序操作。
7、使用倒排索引:可以用倒排索引替换Bitmap索引,基于倒排用来进行文本类型的全文检索、普通数值日期类型的等值范围查询,快速从海量数据中过滤出满足条件的行:倒排索引
8、使用 NGram BloomFilter 索引:如果查询中包含模糊匹配,可以考虑使用 NGram BloomFilter 索引来加速 LIKE 查询: N-Gram 索引
9、避免使用高基数列进行 group by 和 order by:如果可能,尽量避免在基数很高的列上进行 group by 和 order by,因为这些操作在高基数列上可能会非常耗时。
10、查询调优:通过查看查询的 Profile 信息,分析查询的执行计划,找出性能瓶颈,并进行针对性的优化: Query Profile

需要注意的是,在进行性能优化时,应该根据具体的业务场景和数据特点进行测试和调优,不同的场景可能需要不同的优化策略。