java程序sql插入数据慢问题

拆分小事务,是否有性能提升?提升有多少?

还是单条,需要看你的jar包里封装的实现了,是不是addBatch和executeBatch。如果不是,那应该也不是批量执行,具体原因还得看封装jar里的实现逻辑。idea可以直接点进去,自动反编译的,能看到具体逻辑的。

没有性能提升,感觉还慢了点。


这边排查了下,entityManager的源码没看到启用addBatch和executeBatch。
那要怎么样实现批量执行那?
我们写的1000条刷新一下数据库,就是想实现批量提交的,感觉没生效

你这是个接口,要看实现类里的代码才能看到具体逻辑啊。

csdn找的简单教程,

简单来说就是使用:url加入 ?rewriteBatchedStatements=true 设置支持批量处理, addBatch,executeBatch

好的,麻烦老师了,我们这边测试下

老师,您给你的是jdbc的插入方式,我们用的jpa的,jpa应该也是支持批量的,感觉我们的写法没什么问题啊。
现在就是不知道为什么jpa的批量插入不好使了?

不好意思,没有用过JPA,但是JDBC就是那么实现的。
你可以研究一下jpa对批量的实现方式。目前看实现逻辑并没有批量,即使url开启批量,数据库层监控到并不是批量,这样看客户端应用实现的不是批量了。需要你们自己评估实现方式

好的,麻烦老师了

老师,我们这个写法,连接mysql数据库是可以批量执行的。
是不是jpa批量插入不支持ob数据库?
我找了下资料,jpa应该是会检测下引擎,不知道是不是ob的引擎没在范围内?

我也只是ob用户,但是我们都是用mysql用法连ob的。

你可以用MYSQL的url串连ob,只换IP地址,端口,用户名密码,不要用ob的驱动,用标准mysql试试。

您的意思是驱动改成jdbc:mysql?
改成mysql的连接方式了,还是导入的很慢。
老师,您用的导入都是jdbc的吗?没用过jpa的吗?

可以把检测引擎的代码贴一下吗?

我也是看网上说的。不知道是不是这块影响的,使用InnoDB引擎