问题现象
应用程序执行事务操作时,遇到 Transaction is timeout。
问题原因
ob_trx_timeout 参数导致。ob_trx_timeout 用于设置事务超时时间。当整个事务的持续时间,包括空闲时间和活跃时间,超出该参数设置的时间后事务异常(此时客户端链接不会断开,客户端也不会收到显式的错误),当事务超时异常后,该事务的后续 SQL 将会收到报错 Transaction is timeout。
影响版本
OceanBase 数据库 V2.X 和 V3.X 版本。
解决方法及规避方式
- 增大
ob_trx_timeout来缓解。ob_trx_timeout默认值为 100000000,单位为微秒。 - 分析业务逻辑,评估业务是否需要过长的
ob_trx_timeout时间,一般来说,ob_trx_timeout过长的事务是不合理的。
更多关于 ob_trx_timeout 变量的介绍请参考 ob_trx_timeout。