rocH
#1
【 使用环境 】测试环境
【 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 个赞
rocH
#4
看OB_SQL_AUDIT记录。 query_sql也是只有单行修改的sql
如图sql预编译是一起提交的
这种该怎么调整应用
1 个赞
咖啡哥
#5
建议用批量 SQL 语句,减少与数据库交互次数。批量插入与批量更新 JDBC 配置示例
:jdbc:oceanbase://IP:2883/dbname? useServerPrepStmts=false&rewriteBatchedStatements=true&allowMultiQueries=true
1 个赞
rocH
#6
更改配置ob_enable_batched_multi_statement 为true后。 执行效率大幅提升,
该配置默认为false。 请问是存在哪方面的隐患,才将这个配置默认值设为false吗
1 个赞
咖啡哥
#7
因为大多数场景还是TP型的。只有这种批处理的场景才需要调整。
1 个赞