对于慢查询和慢导入,Doris 提供了完善的 Profile 机制,在了解相关技术细节后,我们在线上集群开启了 Profile 收集,通过调度任务定时收集慢查询、慢导入的 Profile 信息并落库。
Doris 提供的 Profile 信息非常详细,例如 OLAP_SCAN_NODE
提供了原始的扫描行数,各个索引的过滤行数,每个 Instance 的 EXCHANGE_NODE
提供了接收的数据总行数和接收的数据量大小。这些信息为查询调优提供了详细的依据,我们在使用过程中针对快速定位查询性能的瓶颈进行了优化,取得了良好的效果。
建表规范
在我们的使用场景中,有下列类型的表:
-
pda 表:每日全量更新,即每日分区存储全量快照数据
-
pdi 表: 每日增量更新,即每日分区存储增量数据
-
a 表:全量不分区表
-
s 表:静态非每日更新数据
由于当前 Doris 集群中所有的表都是基于 Hive 数仓中各层级的表同步而来,因此目前仅使用了 Duplcate 模型和 Unique 模型,对于 pda、pdi 和 a 表,为了降低 Doris 表的分区数,减轻 FE 元数据管理压力,我们在建 Doris 表时均启用了根据日期划分的动态分区特性,较久远的历史数据我们按年、月的维度分区归档,近期的数据按日、小时分区,未来我们计划通过程序自动识别完成历史分区的归档合并。
对于 pda 表使用场景,pda 表需要每日同步全量数据,我们采用