我正在测试eclipselink以将批量数据插入到derby中。 通过相同的数据集比较,eclipse链接需要两次jdbc批量更新。
I have enabled the batchupdate feature of eclipse link, and the other properties:
<property name="eclipselink.jdbc.batch-writing" value="JDBC"/>
<property name="eclipselink.jdbc.batch-writing.size" value="1000"/>
<property name="eclipselink.jdbc.cache-statements" value="true"/>
<property name="eclipselink.jdbc.cache-statements.size" value="30"/>
<property name="eclipselink.cache.shared.default" value="false"/>
<property name="eclipselink.jdbc.read-connections.max" value="20"/>
<property name="eclipselink.jdbc.read-connections.min" value="1"/>
<property name="eclipselink.jdbc.write-connections.min" value="1"/>
<property name="eclipselink.jdbc.write-connections.max" value="30"/>
问题是如何使eclipse链接更快?
答案 0 :(得分:1)
请包含代码和SQL日志。还包括您的JDBC代码,并确保它是犹太教(结束语句等)。
您使用序列预分配吗?如果没有,则不会进行任何批处理(检查SQL日志以查看批处理是否正在发生)。
我不会更改连接池默认值,您的效率低于默认值(初始值1,最小值32,最大值32,没有单独的读/写池)。具有不同的最小值/最大值将导致连接限制,这是不好的。
请参阅, http://java-persistence-performance.blogspot.com/2011/06/how-to-improve-jpa-performance-by-1825.html
由于JPA在JDBC之上运行,因此总是比完全优化的JDBC代码花费更多时间。但是它的优势在于允许您使用Java对象而不是编写JDBC代码,并且仅通过更改标志来进行批量写入等主要优化,而不是重写代码。