本文介绍 OceanBase 数据库日志打印 Transformer: iteration count overflow(MAX_ITERATION_COUNT=10, ret=0) 的原因。
OceanBase 数据库重写语句树规则
OceanBase 数据库中引入了一套规则来重写语句树,该过程由 ObTransformerImpl::do_transform 方法实现。并不是所有的重写规则都适用于每一条 SQL 语句,因此在真正开始重写语句树之前,重写器会根据当前语句树的特性确定应该应用哪些规则。 重写完成后,接下来重写器会进行多次迭代,在每一次迭代中都会尝试对语句树应用适用的重写规则。如果某次迭代中都没能对当前语句树做出新的改写,就表明重写过程收敛了,否则继续迭代,直至达到最大迭代次数(默认为 10 次)。 即 SQL 引擎在对业务 SQL 进行重写时,最多重写 10 次,日志会打印如下 WARN 信息,这种信息对业务没有影响。
WARN [SQL.REWRITE] transform_iterately (ob_transformer_impl.cpp:123) [108969][xxxxx-xxxxx] [lt=7] Transformer: iteration count overflow(MAX_ITERATION_COUNT=10, ret=0)
适用版本
OceanBase 数据库 V1.4.x、V2.x 和 V3.x 版本。