吃透StarRock分区、分桶
简述
在StarRocks中,表被划分成多个Tablet,多副本场景下,每个Tablet多副本冗余存储在BE(Backend)上。
对于单分区表、数据在逻辑上划分为多个桶(Bucket),每个桶的数据称之为一个Tablet。
如果设置为单分区单桶,那么无论数据量大小,都只会有一个Tablet,因为所有数据都属于同一个桶。
分区的作用
分区裁剪(查询性能优化)
分区裁剪可以最大限度地利用集群的并发性能,提升查询性能。如果查询条件与分区键相关,优化器会生成更优的逻辑计划,减少扫描的数据量。
设定存储策略
将一张表按照分区键拆分成不同的管理单元,针对每一个管理单元选择相应的存储策略,比如分桶数、冷热策略、存储介质、副本数等。
分桶的作用
在StarRocks中,分桶是实际物理文件组织的单元。所以同一副本同一个桶的数据肯定在同一个物理节点中。
数据分布均匀
分桶可以将数据均匀地分布到集群的不同节点上,避免数据倾斜,确保查询负载均衡。
查询优化
分桶可以提高查询效率,特别是在执行join操作时,如果两个表在相同的分桶键上进行了分桶,并且它们被指定在同一个Colocation Group中,那么在执行join操作时可以减少数据的shuffle,提高查询性能。
提高数据插入效率
分桶可以提高数据插入效率,因为数据可以并行地插入到不同的桶中,减少了单个节点的负载。