如何更好理解转储和合并

ppt上是说:
Mini Compaction(转储)
Minor Compaction
Major Compaction(合并)
Adaptive Compaction(自适应合并),Minor Compaction是作为转储还是合并呢,都用的compaction.

3 个赞

@论坛小助手

转储和合并是数据库管理中的重要概念,特别是在基于LSM-Tree结构的系统如OceanBase中。

  1. 转储 (Minor Freeze): 转储指的是将内存中的MemTable数据持久化到磁盘上,生成新的SSTable文件。这一过程是针对增量数据的,目的是将最近一段时间内发生的数据变更保存下来,以便于后续的读取操作。转储通常是定期执行的,也可以由用户手动触发。

  2. 合并 (Major Freeze): 合并是指将磁盘上的多个SSTable文件进行合并,以减少文件数量并提高查询效率。合并操作涉及到对多个版本的数据进行归并,可能包括删除过期数据或重复数据。合并可能会消耗较多的时间和资源,因此通常是在后台异步执行的。

  3. 自适应合并 (Adaptive Compaction): 自适应合并在某些情况下可以视为Minor Compaction的一种特殊形式,它根据系统的负载情况动态调整合并策略。自适应合并的目的在于平衡读写性能,避免因频繁的合并操作导致系统性能下降。

综上所述,Minor Compaction更倾向于描述转储操作,即把内存中的数据持久化到磁盘,而Major Compaction则是指将磁盘上的多个SSTable文件进行合并的过程。Adaptive Compaction则是一种根据系统负载自动调整的合并策略。

检索到的文档如下:

  1. 合并管理概述
  2. MAJOR 和 MINOR
  3. OceanBase 数据库性能的影响因素
3 个赞

https://open.oceanbase.com/blog/20510510880

1 个赞

有些概念需要多看几遍官方PPT就理解了,比如我看几遍后才慢慢理解“均衡组”的概念

2 个赞

小的合并

1 个赞

数据分层转储
0ceanBase 采用分层转储的策略:
L0层:从内存中转储生成的SSTable,称为L0层。
L1层:当L0层的数据量达到阈值时,会自动将L0层的多个SSTable压缩成一个SSTable,称为L1层。
L2层:将所有的动静态数据做归并,形成一个新的基线SSTable,称为L2层。
转储的触发机制:
■自动触发:当一个租户的MemTable 内存的使用量达到阈值时,会自动触发转储。
■手动触发:主动通过运维命令也可以发起转储。

数据合并的作用和触发机制
合并的作用:
■合并会将动静态数据做归并,失效的多版本数据删除,生成按照主键排序的新的基线 SSTable,有利于提升查询的性能。
■合并在生成新的基线 SSTable 时对数据进行编码和压缩,降低磁盘空间,
■合并过程中,0ceanBase 会对数据进行校验,并执行Schema变更对应的数据变更。
合并的触发机制:
自动触发:当一个租户的转储次数达到阈值时,会自动触发转储,
手动触发:主动通过运维命令也可以发起合并。
定时触发:合并是一个比较耗时的操作,也可以指定在每日固定的时间来执行。

1 个赞

转储 vs 合并的对应关系

  • Mini Compaction(转储):是内存表(MemTable)写满后,落地为磁盘小文件(SSTable)的操作,属于 “内存→磁盘” 的转储。
  • Minor Compaction:是磁盘上多个小 SSTable 合并为较大 SSTable 的操作,属于 “同层级文件” 的合并(非转储)。
  • Major Compaction(合并):是跨多层级 SSTable 的大规模合并,同时清理过期数据,属于彻底的文件整合。
  • Adaptive Compaction:根据系统负载自动选择 Mini/Minor 的执行策略,是自适应的转储 / 合并调度。
1 个赞

看下面的评论,Minor Compaction不是更偏向于合并吗。把多个L0层合并成L1sstable。