腾讯云数据仓库 TCHouse-D 查询调优

这篇总结了Doris数据库的查询与性能优化方法,包括基础查询调优、Join优化、Rollup使用、物化视图、索引优化及Cache配置,旨在提升查询效率。 基础查询调优:查询分区表需带分区字段,优先命中分区/分桶键及前缀索引,用具体字段代替*并加limit,避免or和函数包裹列。 Join优化:效率顺序为Colocate > Bucket Shuffle > Shuffle > Broadcast,利用RuntimeF。

相关产品
腾讯云数据仓库 TCHouse-D 产品页,含版本规格、价格与购买入口。

一、基础查询调优

·查询分区表时,一定要带上分区字段,Explain + SQL 可以协助用户分析查询了几个分区和 tablet 的数据。

·查询 SQL 条件最好能命中分区 Key 和分桶 Key。

·查询 SQL 条件最好能命中前缀索引。

·由于 Doris 是列存数据库,当查询的字段足够多的时候,可能性能还不如行式存储,建议查询时尽可能选择具体的字段代替 *,在查询的最后方加上 limit number 的限制。

·执行 Select 操作的时候尽可能避免写成 function(column)= "xxxx"的形式,这样将导致无法发挥 Doris 系统谓词下推的优势,左侧应为列名,右侧应该为可以计算展平的常数值。

·查询尽可能避免使用 or,union all 的情况,在大多数场景下,考虑使用 in 代替 or。

·普通数据探查的 SQL,如果不需要全部数据,建议加上 limit 返回条数限制,也可加速查询。

二、Join 优化

·Shuffle 方式优化:效率为 Colocate join > Bucket Shuffle > Shuffle > BroadCast。

·RuntimeFilter:join 查询中,存在除了关联条件之外,右边有其他过滤条件。

三、使用 Rollup

·查询无法覆盖基表前缀索引,通过 Rollup 调整 Key 顺序形成前缀索引。

·对 Aggregate 表进行 Key 筛选聚合

四、使用物化视图

如果经常对某表进行模式固定的聚合查询,建议在此表创建物化视图;

·Rollup 支持的场景都能用;

·对 Duplicate 表形成额外聚合。

五、索引优化

·Bitmap 索引:取值基数比较小的列[100-100000],查询条件命中列。

·BloomFliter 索引:如果经常对某列进行精确点查,且列的基数较高,建议在此列创建 Bloom filter 索引。

六、使用 Cache

·PageCache:此配置默认开启。

·SqlCache:此配置默认关闭。并发高,查询结果集较小时效果好。

赞 (0)
上一篇 4天前
下一篇 4天前