基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
主副本存在长事务时,从副本弱读 hung 的问题
更新时间:2026-05-14 07:41
适用版本
OceanBase 数据库 V3.x 版本。
问题现象
主副本上存在长事务,对从副本使用弱读的场景,弱读查询 hang 住造成从副本 CPU 使用异常。
问题原因
OceanBase 数据库 V3.x 版本对事务日志采用即时写入和同步的策略,即在事务的执行过程中(V2.x 版本为事务提交时)持续地将事务日志落盘和同步。所以在长事务执行过程中,日志会不断同步到从/只读副本。因为弱读的读版本号比部分的“脏”日志的版本号更大,此时在从/只读副本的弱读可以看到这些“脏”数据。
由于事务一直没有结束,弱读无法获取最后的提交版本号,导致当前弱读无法判断是否需要读取该事务的数据,会一直等在这里直到 SQL 超时,报错 -6004(读请求等待事务结束)。当等待事务结束的 SQL 并发较高时,会造成队列积压、租户 CPU 使用异常,最终影响整体业务。
解决方法
规避此类使用场景:尽量避免长事务,或者尽量避免在存在长事务时执行从副本弱读。