【Oceanbase】OceanBase批量写入性能优化实战:转储、日志归档、多并发
参考链接:https://www.oceanbase.com/docs/common-oceanbase-database-standalone-1000000003138710
一、背景与核心问题
某数据同步服务的核心功能是将A数据库数据批量写入B数据库,早期B数据库采用Oracle时,全量批量写入耗时稳定在3分钟。为适配业务架构升级,将B数据库替换为OceanBase 4.2.5.6版本后,相同数据量的批量写入耗时骤增至29分钟,性能下降近10倍。
核心疑问:仅切换数据源未改动业务逻辑,为何批量写入耗时差异巨大?是什么因素导致OceanBase写入性能大幅低于预期?
二、怀疑方向分析
结合OceanBase架构特性与批量写入场景特点,初步锁定三个核心怀疑方向,为后续排查提供明确靶标:
1. 转储参数配置不合理
OceanBase的MemStore(内存存储)满阈值触发数据转储(Minor Compact),若转储触发参数设置过小,会导致批量写入过程中频繁触发转储。转储操作会占用CPU、IO资源,大量时间消耗在数据落盘流程,而非实际写入。
2. 日志归档功能开启
OceanBase的日志归档(Log Archiving)会将Redo Log同步至归档存储,批量写入场景下会产生海量日志,若归档功能未关闭,日志同步流程会成为写入性能瓶颈。
3. 并发配置参数偏低
OceanBase租户的工作线程数与数据库连接池并发数直接决定写入并行度。若租户工作线程数不足、应用侧连接池并发配置过低,会导致批量写入任
