数据岗位面试题更新 2026-08-05

Presto 的智能查询优化器在应对复杂查询时,具体采取了哪些优化策略和机制?请结合其架构特性说明。

数据性能优化技术原理方案权衡Presto

考察说明

考查对 Presto 查询优化器核心机制的理解,包括优化层次、关键技术和适用条件。

回答思路

  1. 【回答框架 1】Presto 查询优化器采用基于成本的优化(CBO)与基于规则的优化(RBO)相结合的方式。CBO 通过统计信息估算执行代价,选择最优执行计划;RBO 则应用一系列启发式规则进行等价变换,如谓词下推、列裁剪等,减少数据扫描和传输量。
  2. 【回答框架 2】其优化过程贯穿 SQL 解析、逻辑计划、物理计划等阶段。在逻辑层面进行子查询去关联化、连接重排序等;在物理层面选择 join 策略(如 hash join、broadcast join)、动态过滤等,以适应分布式执行环境。
  3. 【回答框架 3】针对复杂查询,Presto 会利用分区裁剪、动态分区剪枝等技术,减少读取的数据量。同时支持基于成本的 join 重排,通过估算表大小和选择率,确定最优连接顺序,降低中间结果规模。
  4. 【回答框架 4】Presto 优化器还支持物化视图和谓词下推至连接数据源,对于 Hive、Iceberg 等外部数据源,可下推过滤条件,减少网络和存储访问开销。此外,通过并行度和资源队列配置,保证大查询的稳定性。
  5. 【关键点 1】CBO 与 RBO 结合,以统计信息驱动最优计划选择。
  6. 【关键点 2】优化覆盖逻辑阶段和物理阶段,包括 join 重排序、动态过滤。
  7. 【关键点 3】分区裁剪和谓词下推显著减少数据读取量。
  8. 【关键点 4】优化器会考虑资源限制和并行度,确保大查询高效执行。
  9. 【易错点 1】CBO 高度依赖准确的统计信息,信息过时可导致次优计划。
  10. 【易错点 2】动态过滤和谓词下推对数据源连接器支持有限制,并非所有场景均生效。