Apache Paimon-LSM tree(杂记)
写入
先写入内存,之后在flush到磁盘
Writer节点中Cp之前Flush到磁盘或者内存满了,返回元数据,用于发往下游
生成L0层的sort run,L0层每个文件一个sortrun,大于level0层一层一个sortrun,sortrun之间没有overlap重叠
合并
- Flush到磁盘前尝试压缩 cp 之前,或者内存满了
根据compaction strategy 找出要compact的sortrun
fullcompaction
- 所有sortrun参与compaction
- 触发条件:changlogproducer:fullcompaction、批模式执行、相关配置、size放大
universalCompaction
- space 放大触发full-compaction
- 由individual Size ratio触发minor compaction.Size(R2) / Size(R1) <= IndividualSizeRatio时,r1 r2都执行压缩,目的sr尽可能对齐。
- num-sort-run.compaction-trogger触发minor compaction
ForceUplevel0Compaction:
- mergeEngine=first-row或changlogproducer=lookup或delevectors=true
- compaction时强制把L0层所有文件进行rewrite(需要产生changlog,或者delevectors所以需要压缩L0层)
- 封装一个MergeTreeCompactTask(callable 返回compactResult)封装一个扔到线程池去执行(运行时上报metrics)
执行compactRewriter,并且按需生成changlog,生成delevectors(产出changlog会调用mergefunction对数据进行合并例如agg、firstrow、pu表等)
- 读数据时多路归并排序算法对应pip2
- changlogproducer=lookup|fullcompaction或delevectors=true 产出changlog
评论已关闭