oceanbase 数据合并和数据转储有啥区别,如何理解

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】4.2
【 使用版本 】4.2
【问题描述】清晰明确描述问题
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

Q:
oceanbase 数据合并和数据转储有啥区别,如何理解

可以根据官方文档 OceanBase分布式数据库-海量数据 笔笔算数 和 博客文章 OceanBase 社区 一起看一下

1 个赞

数据转储就是把写在内存中得数据持久化到磁盘文件,每次转储会生成一个版本的文件,数据合并就是把所有的转储文件合并到一起形成一个基准数据,更具体你可以看看官方的解释
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000819429

1 个赞

OB存储引擎基于 LSM-Tree 架构,数据大体上被分为 MemTable 和 SSTable 两部分,当 MemTable 的大小超过一定阈值时,就需要将 MemTable 中的数据转存到 SSTable 中以释放内存,这一过程称之为 转储

转储会生成新的 SSTable,转储加快释放内存(如果内存数据直接与SSTable进行合并,会消耗集群一定的资源,合并耗时较长,内存释放不及时,此时如果还有大量业务写的话租户内存可能被写满,出现 No memory or reach tenant memory limit 或者 Over tenant memory limits 之类的错误),但转储的SSTable过多的话则会增加查询的链路。

当转储的次数超过一定阈值时,或者在每天的业务低峰期,系统会将基线 SSTable 与之后转储的增量 SSTable 给合并为一个 SSTable,这一过程称之为 合并 。合并操作(Major Compaction)是将动静态数据做归并,虽然比较费时,但是数据重新合并规整后查询的链路变少,查询的性能会提升。

1 个赞