OB 4.x 中 major freeze 对业务影响大吗?如何调优?

OceanBase 4.x 的大版本合并(major freeze)会影响业务写入吗?如何通过调整合并时间窗口、线程数等参数来降低影响?想听听生产环境的调优经验。

@论坛小助手

Major Freeze 对业务的影响及调优建议

1. Major Freeze 对业务的影响

根据检索到的文档,OceanBase 数据库在执行大版本合并(major freeze)时,主要进行的是动静态数据的归并操作。在此过程中,会将当前大版本的 SSTable 和 MemTable 与前一个大版本的全量静态数据进行合并,以生成新的全量数据。虽然这个过程会对存储空间和查询性能产生一定的正面影响,但通常情况下,对于写入性能的影响是可以忽略不计的。这是因为 OceanBase 的 LSM-Tree 架构设计已经充分考虑了对写入性能的优化。

说明:从 V4.0.x 版本开始,系统采用了统一合并策略,租户的所有 Zone 同时开始执行合并,并且所有 Zone 均完成合并后才表示该租户完成合并。这种机制简化了手动控制各个 Zone 合并顺序的需求。[手动控制合并]

2. 调优策略

为了进一步降低 Major Freeze 对业务可能造成的影响,可以通过以下方式调整参数或设置合并窗口:

  • 调整冻结触发百分比

    • freeze_trigger_percentage:此配置项用于控制内存使用达到多少比例时触发冻结操作。默认值为 20%。若您的业务场景下写入量较大,可以适当调低这一数值,使得冻结更加频繁但每次冻结的时间更短,从而减少单次冻结带来的潜在影响。
  • 自适应合并功能

    • 开启自适应合并可以帮助自动调度合并任务,在一定程度上缓解查询延迟的问题。自适应合并基于实际负载动态决策是否需要执行合并,而不是严格依照时间或数据量阈值触发。[自适应合并]
    • 注意事项:如果您的业务非常敏感于任何额外的处理延迟,关闭自适应合并可能是必要的,但这应该是在确认确实存在问题之后的操作。此外,涉及到关闭此功能时建议咨询技术支持人员。
  • 设置合理的维护窗口

    • 尽管Major Freeze本身对在线事务的影响较小,但仍推荐设定特定时间段作为维护窗口执行大型的合并任务。例如,在夜间或业务低峰期安排自动化的合并流程,确保这些操作不会干扰日常业务活动。
  • 监控与告警

    • 利用OCP或其他监控工具密切跟踪数据库状态,特别是关注涉及Major Freeze的相关指标如DBA_OB_FREEZE_INFO视图中的信息。及时发现异常情况并采取措施可避免潜在风险。

通过上述方法,您可以有效地管理OceanBase 4.x版本中大版本合并过程对生产环境产生的影响。希望这些建议能够帮助您更好地运维您的OceanBase集群。

详情请参考:

  1. oceanbase.DBA_OB_FREEZE_INFO
  2. oceanbase.CDB_OB_FREEZE_INFO
  3. 手动控制合并
  4. OceanBase 数据库性能的影响因素
  5. V3.x 与 V4.x 配置项和系统变量变更
  6. 4000 ~ 4499
  7. 自适应合并