Apache Paimon(原Flink Table Store)的主键表采用LSM(Log-Structured Merge-Tree)结构存储数据,其数据合并(Compaction)机制是保证查询

一、LSM结构与数据合并背景

LSM写流程
数据先写入内存的MemTable,达到阈值后刷盘成不可变的SSTable文件。
合并必要性
多次写入会产生多个SSTable,导致查询时需要合并多个文件(影响性能),且冗余数据占用存储空间。


二、合并触发条件


       Paimon通过以下条件触发合并,源码中对应CompactManager类(路径:paimon-core/src/main/java/org/apache/paimon/compact/CompactManager.java):


1. 自动触发条件


 SSTable数量阈值
当某层(Level)的SSTable数量超过compaction.max.file-num(默认50)时触发合并。

// CompactManager.java
public boolean shouldWaitCompaction() {
  return currentFileCount() > maxFileNum;
}

写入检查点(Checkpoint)
在Flink的检查点机制中,Paimon会调用snapshotState()方法,触发异步合并。

// AbstractFileStoreWriteOperator.java
public void snapshotState(StateSnapshotContext context) throws Exception {
  compactManager.tr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

10年JAVA大数据技术研究者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值