05 数据压缩

本文介绍CarbonData中的数据压缩机制,包括轻量压缩和重量级压缩两种类型。通过压缩可以显著提高查询性能,减少存储目录中的小文件数量。文章还详细解释了如何配置压缩相关参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

压缩可显着提高查询性能。 在加载数据期间,几个CarbonData文件会被生成,这是因为数据只在每次加载(每个load segment和一个B+ tree 索引)时被排序。

频繁的load数据会导致carbon的存储目录生成很多影响查询性能的分散的CarbonData小文件,CarbonData提供了压缩load数据的措施。 压缩过程通过对来自各个分段的数据进行合并排序,将多个分段合并为一个大分段。

有两种压缩类型:

轻量(Minor )压缩和重量级(Major )压缩
- 轻量压缩(Minor Compaction):

用户可以指定要合并的load的数量,如果参数carbon.enable.auto.load.merge被设置为true,则轻量压缩在每次数据load时触发。如果有任何segment可用于合并,则压缩将与load data并行运行。

轻量压缩有两个级别:
  • Level 1:合并尚未被压缩的segments
  • Level 2: 再次合并压缩的segments生成更大的segments

    ALTER TABLE table_name COMPACT 'MINOR'
    • 重量级压缩(Major Compaction)

    在重量级压缩中,很多segments可以合并成一个大的segments。用户可以指定压缩大小,直到segments可以被合并。通常在非高峰时段进行大型压缩。该命令将指定数量的段合并到一个段中:

    ALTER TABLE table_name COMPACT 'MAJOR'

在carbon.properties中配置和压缩有关的参数:

属性描述默认值适用压缩级别
carbon.compaction.level.threshol决定多少段要合并。比如如果设置为“2,3”,
则会对没2个segments进行级别1的压缩,
对3个级别1压缩后的segments进一步进行级别2的压缩。
4, 3Minor
carbon.major.compaction.size用于重量级压缩低于此阈值的segments将被合并。1024 MBMajor
carbon.numberof.preserve.segments该属性设置要保留的segments数量以防止被压缩。
例如carbon.numberof.preserve.segments = 2,
那么2个最新的segments总是被排除在压缩之外。默认没有segments被保留。
合法值:0-100
0Minor/Major
carbon.allowed.compaction.days在指定的天数内load data的segment将被合并。如果配置为2
,仅在2天内load的segment被合并。默认禁用
。合法值:0-100
0Minor/Major
carbon.number.of.cores.while.compacting用户压缩的cpu数量。合法值:0-1002Minor/Major

压缩后源数据依然存在 可以运行一下命令清除:

CLEAN FILES FOR TABLE table_name
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值