java应用通过hikari连接ob集群,批量提交1000条单行数据update语句。执行比较慢。 黑屏执行这1000条sql比较快。

【 使用环境 】测试环境
【 OB or 其他组件 】ob
【 使用版本 】4.2.1-8BP
【问题描述】
java应用中,批量提交1000条 单行update语句。sql返回结果很慢。
navicat开事务直接提交同样1000条单行update语句。sql返回结果很快。

如图为查询OB_SQL_AUDIT表得到的,通过java应用修改的执行记录。单行修改耗时0.2s

通过navicat连接数据库。直接执行,仅需0.001s

查询OB_SQL_AUDIT记录也能验证这一点

java应用连接ob也加了参数 rewriteBatchedStatements=true

如何排查问题

1 个赞

batch update肯定没有起作用

1 个赞

看OB_SQL_AUDIT记录。 query_sql也是只有单行修改的sql

如图sql预编译是一起提交的

这种该怎么调整应用

1 个赞

建议用批量 SQL 语句,减少与数据库交互次数。批量插入与批量更新 JDBC 配置示例
:jdbc:oceanbase://IP:2883/dbname? useServerPrepStmts=false&rewriteBatchedStatements=true&allowMultiQueries=true

1 个赞

更改配置ob_enable_batched_multi_statement 为true后。 执行效率大幅提升,
该配置默认为false。 请问是存在哪方面的隐患,才将这个配置默认值设为false吗

1 个赞

因为大多数场景还是TP型的。只有这种批处理的场景才需要调整。

1 个赞