2013-04-03 56 views
1

我正在測試eclipselink將批量數據插入德比。 通過相同的一組數據進行比較,eclipse鏈接需要雙倍的jdbc批量更新時間。如何使eclipselink更好地執行批量插入

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鏈接更快?

回答

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代碼的優點,並且通過改變標誌來進行批量寫入等重大優化,而不是重寫代碼。