渐进合并对于onlineddl的影响

在obcp v4 ppt中看到online ddl是依赖渐进式合并来实际修改数据,每日合并做一部分,我想了解他对于ddl的效率是否会有影响,是否全部合并完才能达到ddl效果?比如加列或减列。

@论坛小助手

根据文档库中的信息,我们可以分析渐进合并对 Online DDL 的影响:

  1. 渐进合并的定义
    根据文档片段 4(标题:合并管理概述 → 合并分类),渐进合并是指每次全量合并一部分数据,经过若干轮次后整体数据被重写一遍。这种方式可以减少单次合并的压力,避免长时间占用系统资源。

  2. Online DDL 的依赖关系
    在 OceanBase 数据库中,Online DDL 操作通常依赖于合并机制来实际修改底层存储的数据。例如,当执行加列或减列操作时,OceanBase 数据库会通过合并将新的 Schema 信息应用到数据文件中。

  3. 渐进合并对 Online DDL 的效率影响
    渐进合并的特点是分批次完成数据的重写。因此,在执行 Online DDL 操作时,数据的实际修改会随着渐进合并逐步完成。这意味着:

    • DDL 效果的即时性:在 Online DDL 操作完成后,新 Schema 立即对新写入的数据生效,但对于已存在的旧数据,其 Schema 修改需要等待合并完成。
    • 完全生效的时间:只有当渐进合并完成所有相关数据的重写后,整个 DDL 操作的效果才会完全体现在所有数据上。
  4. 具体场景分析

    • 加列操作:对于新增的列,默认值会立即对新写入的数据生效,但已有数据的默认值填充需要等待合并完成。
    • 减列操作:删除的列在新写入的数据中不会出现,但已有数据中该列的物理删除需要等待合并完成。
  5. 性能与效率
    渐进合并的设计初衷是为了减少单次合并的压力,因此它对 Online DDL 的效率影响主要体现在以下方面:

    • 短期影响:由于渐进合并分批次进行,可能会导致部分数据在短期内仍使用旧 Schema,这可能会影响查询性能。
    • 长期影响:随着渐进合并的逐步完成,最终所有数据都会切换到新 Schema,从而实现完整的 DDL 效果。

结论

根据文档片段 4 和 Online DDL 的工作机制:

  • 渐进合并确实会对 Online DDL 的效率产生一定影响,尤其是在数据完全切换到新 Schema 的过程中。
  • 不需要等到全部合并完成才能看到部分 DDL 效果(如新写入数据立即使用新 Schema),但要达到完全一致的效果,则需要等待渐进合并完成所有相关数据的重写。

如果需要进一步优化渐进合并对 Online DDL 的影响,可以考虑调整合并相关的配置项(参考文档片段 4 中的“修改合并配置”)。

详情请参考:

  1. OceanBase 数据库性能的影响因素
  2. DDL 功能概述
  3. 列类型变更规则
  4. 合并管理概述
  5. 并行 DDL
  6. 自适应合并
  7. Online DDL 和 Offline DDL 操作
  8. 并行执行分类与优化
  9. 并行 DML
1 个赞