问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

三分钟掌握Doris分区与分桶策略,提升大数据处理性能

创作时间:
作者:
@小白创作中心

三分钟掌握Doris分区与分桶策略,提升大数据处理性能

引用
1
来源
1.
https://www.modb.pro/db/1839252083992702976

Doris数据库通过分区和分桶策略优化大规模数据集的处理性能。本文详细介绍了范围分区、列表分区、哈希分桶和随机分桶等具体实现方式,并提供了数据分区、数据分桶、索引优化以及副本和存储等方面的最佳实践指南。

Doris支持两种数据划分方式,分别是Partition(分区)和Bucket(分桶)。这两种机制在处理大规模数据集时,对于优化查询性能和简化数据管理至关重要。

Partition(分区)

  1. 范围分区:范围分区通常基于时间或其他有序的数值类型列。例如,可以按照日期字段将数据划分为每月一个分区,便于数据的批量处理和过期删除。范围分区的定义通常采用VALUES LESS THAN语句,指定分区的最大值,系统会自动将前一个分区的上界作为该分区的下界[^2^]。

  2. 列表分区:列表分区通过明确的枚举值来定义每个分区,适用于具有固定取值集合的字段,如地区或类型等。这种方式的分区可以通过VALUES IN语句来定义,每个分区包含一组特定的枚举值[^2^]。

Bucket(分桶)

  1. 哈希分桶:哈希分桶通过哈希函数将数据均匀分布到不同的桶中。这种策略适用于没有明显顺序或无法预知的数据分布。每个分桶可以看作是一个独立的存储和处理单元,有助于提高数据处理的并行度和查询效率[^1^]。

  2. 随机分桶:当数据在某些字段上存在明显的倾斜时,使用随机分桶可以避免数据分布不均的问题。随机分桶通过随机算法将数据分配到不同的桶中,从而减少特定桶的数据热点问题。

在Doris中,通常建议数据量达到5亿以上时必须设计分区分桶策略,以减少单个查询的数据范围。

数据分区策略

  • 按时间分区:最常见的分区方式是按时间分区,如按天、按月或按年分区。这种方式适合具有时间属性的数据,并且有助于数据的过期和清理操作[^1^]。

  • 动态分区问题:对于小于2000万的数据量,可以不设置分区,而对于大于2000万的数据量,应避免使用动态分区,因为自动创建的分区可能导致管理不便和资源浪费[^1^]。

  • 特殊处理:对于历史数据或增长缓慢的数据,可以使用单一分区或按特定规则创建历史分区,如将所有历史数据放到一个特定的分区里,这有助于优化查询性能和管理[^1^]。

数据分桶策略

  • 数据量与分桶:分桶的数量可以根据数据量的大小来调整。例如,100M以内的数据可以设1个桶,100M到1G的数据可以设3-5个桶,1G到3G的数据可以设5-7个桶,以此类推[^1^]。

  • 防止数据倾斜:如果分桶字段存在超过30%的数据倾斜,应避免使用Hash分桶策略,转而使用random分桶策略,以避免数据分布不均导致的性能问题[^1^]。

  • 分桶字段选择:分桶字段应该是数据分布均匀、常用作查询条件的高基数字段。这可以有效地利用分桶的数据剪裁能力,提高查询效率[^1^]。

索引优化

  • 前缀索引:在选择分区分桶字段之外的最长查询且高基数的列上建立前缀索引,可以显著提升查询性能。前缀索引通常只对前36个字符有效,因此设计索引时应充分考虑字段的长度和查询模式[^1^]。

  • BloomFilter索引:适用于高基数列上的in或=查询条件。这种索引有助于加速查询,但不适合低基数的列,因为低基数会使BloomFilter索引的优势不明显[^1^]。

副本和存储

  • Tablet副本数量:为确保数据的安全性和可用性,建议表中的每个Tablet副本数量为3。这样可以在保证数据安全的同时,也兼顾了查询性能[^1^]。

  • 集群规模与Tablet数量:当集群规模较小而数据量很大时,应确保每个Tablet的数据量保持在合理范围内,如1-3G,以避免因Tablet数量过多导致的管理复杂性和资源浪费[^1^][^3^]。

总之,Doris中的分区和分桶机制是其高效数据处理架构的关键组成部分。通过合理设计和配置这些机制,避免数据倾斜,同时可以将 Tablet 的不同副本分散在不同机器上,查询时可以充分发挥不同机器的 IO 性能。可以大幅提升数据处理能力和查询响应速度,支撑起复杂的数据分析和业务决策需求。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号