在obcp v4 ppt中看到online ddl是依赖渐进式合并来实际修改数据,每日合并做一部分,我想了解他对于ddl的效率是否会有影响,是否全部合并完才能达到ddl效果?比如加列或减列。
根据文档库中的信息,我们可以分析渐进合并对 Online DDL 的影响:
-
渐进合并的定义
根据文档片段 4(标题:合并管理概述 → 合并分类),渐进合并是指每次全量合并一部分数据,经过若干轮次后整体数据被重写一遍。这种方式可以减少单次合并的压力,避免长时间占用系统资源。 -
Online DDL 的依赖关系
在 OceanBase 数据库中,Online DDL 操作通常依赖于合并机制来实际修改底层存储的数据。例如,当执行加列或减列操作时,OceanBase 数据库会通过合并将新的 Schema 信息应用到数据文件中。 -
渐进合并对 Online DDL 的效率影响
渐进合并的特点是分批次完成数据的重写。因此,在执行 Online DDL 操作时,数据的实际修改会随着渐进合并逐步完成。这意味着:- DDL 效果的即时性:在 Online DDL 操作完成后,新 Schema 立即对新写入的数据生效,但对于已存在的旧数据,其 Schema 修改需要等待合并完成。
- 完全生效的时间:只有当渐进合并完成所有相关数据的重写后,整个 DDL 操作的效果才会完全体现在所有数据上。
-
具体场景分析
- 加列操作:对于新增的列,默认值会立即对新写入的数据生效,但已有数据的默认值填充需要等待合并完成。
- 减列操作:删除的列在新写入的数据中不会出现,但已有数据中该列的物理删除需要等待合并完成。
-
性能与效率
渐进合并的设计初衷是为了减少单次合并的压力,因此它对 Online DDL 的效率影响主要体现在以下方面:- 短期影响:由于渐进合并分批次进行,可能会导致部分数据在短期内仍使用旧 Schema,这可能会影响查询性能。
- 长期影响:随着渐进合并的逐步完成,最终所有数据都会切换到新 Schema,从而实现完整的 DDL 效果。
结论
根据文档片段 4 和 Online DDL 的工作机制:
- 渐进合并确实会对 Online DDL 的效率产生一定影响,尤其是在数据完全切换到新 Schema 的过程中。
- 不需要等到全部合并完成才能看到部分 DDL 效果(如新写入数据立即使用新 Schema),但要达到完全一致的效果,则需要等待渐进合并完成所有相关数据的重写。
如果需要进一步优化渐进合并对 Online DDL 的影响,可以考虑调整合并相关的配置项(参考文档片段 4 中的“修改合并配置”)。
详情请参考:
1 个赞