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

在 Apache Doris 中,分区表和分桶表各自的作用是什么?它们之间有哪些主要差异?根据什么原则来选择合适的分区或分桶策略?

数据技术原理技术选型Apache Doris

考察说明

考查对 Doris 数据组织方式的理解,以及如何根据数据特征选择合适的表模型。

回答思路

  1. 【回答框架 1】分区(Partition)是在逻辑上按照一定规则(如时间、地域)将表数据划分为多个子表,主要用于数据管理,例如按时间分区便于按时间生命周期管理数据,删除旧分区即可实现数据清理。
  2. 【回答框架 2】分桶(Bucket)是在分区内进一步将数据根据哈希值(如对分桶列的值进行哈希)分散到多个桶中,便于并行查询和数据的均匀分布,也影响数据导入和查询性能。
  3. 【回答框架 3】分区列和分桶列的选择:分区列通常选择查询条件中经常使用的维度,如日期;分桶列选择高基数且查询频繁的列,或者主键。分区粒度不宜过细,否则元数据过多;分桶数需考虑数据量和集群规模,避免过多或过少。
  4. 【回答框架 4】实际选择策略:在创建表时,可以指定分区和分桶。分区有助于裁剪数据扫描范围,分桶有助于本地数据聚合和join优化。一般原则是:数据量大且有明显分区键时使用分区;需要并发查询和负载均衡时使用分桶。两者可以同时使用,但需结合数据特性和查询模式。
  5. 【回答框架 5】根据具体应用通过测试验证效果,分区和分桶的数量没有绝对标准,需根据集群资源、数据倾斜等因素调整。
  6. 【关键点 1】分区用于逻辑管理,分桶用于物理存储分布。
  7. 【关键点 2】分区裁剪可减少扫描数据量,分桶可提升查询并行度。
  8. 【关键点 3】分区键常选日期等低基数维度,分桶列选高基数列。
  9. 【易错点 1】分桶并非保证数据均匀分布,若分桶列选择不当会造成数据倾斜。
  10. 【易错点 2】分区过多会增加元数据开销,影响性能。