6.8.3.4 使用分区裁剪优化扫表¶
1 工作原理¶
Doris 作为一款高性能实时分析数据库,提供了强大的分区裁剪( Partition Pruning )功能,可以显著提升查询性能。分区裁剪是一种查询优化技术,它通过分析查询条件,智能识别与查询相关的分区,并仅扫描这些分区的数据,从而避免了对无关分区的不必要扫描。这种优化方式能够大幅减少 I/O 操作和计算量,进而加速查询执行。
2 调优案例¶
下面,我们通过一个实际案例来演示 Doris 的分区裁剪功能。
假设有一个销售数据表 sales ,该表按照日期进行分区,每天的数据存储在一个独立的分区中。表结构定义如下:
| SQL | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
现在,我们需要查询 2023 年 1 月 15 日 到 2023 年 2 月 15 日 之间的销售总额。查询语句如下:
| SQL | |
|---|---|
1 2 3 | |
对于上述查询, Doris 的分区裁剪优化过程如下:
-
Doris智能分析查询条件中的分区列date,识别出查询的日期范围在'2023-01-15'到'2023-02-15'之间。 -
通过比较查询条件与分区定义,
Doris精确定位需要扫描的分区范围。在本例中,只需要扫描分区p2和p3,因为这两个分区的日期范围完全覆盖了查询条件。 -
Doris自动跳过与查询条件无关的分区,如p1和p4,避免了不必要的数据扫描,从而减少了I/O开销。 -
最后,
Doris仅在分区p2和p3中执行数据扫描和聚合计算,快速获取查询结果。
通过 EXPLAIN 命令,我们可以查看查询执行计划,确认 Doris 的分区裁剪优化已生效。在执行计划中, OlapScanNode 节点的 partition 属性将显示实际扫描的分区为 p2 和 p3 。
| SQL | |
|---|---|
1 2 3 4 | |
3 总结¶
综上所述, Doris 的分区裁剪功能可以智能识别查询条件与分区之间的关联性,自动裁剪无关分区,仅扫描必要的数据,显著提升查询性能。合理利用分区裁剪特性,可以帮助用户构建高效的实时分析系统,轻松应对海量数据的查询需求。