经过多次代码验证,目前mybatis(3.5.7)或ibatis(2.3.0)框架 不支持oceanbase v4的批处理(即批量更新或插入)。代码中有指定mybatis或ibatis的批处理逻辑,但在ob库中实际上还是一条条处理的,这个找dba从sql监控确认过。
1,方案一,oceanbase推荐的批量更新,是使用原生JDBC PreparedStatement批量更新,测试库更新1008条记录耗时接近300毫秒左右(旧sql是6至7秒)。缺点是java代码需要改造,参数全部要在PreparedStatement 中设置,改造代码如下:
2,方案二,采用多线程来做批量插入或更新,如更新1008条记录,10个线程同时处理约600毫秒 ,线程数越多,处理越快。插入代码中需要添加线程池及多线程处理逻辑。缺点是多个线程,无法保证事务一致性。