2013-04-03 3 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"/> 

Вопрос в том, как сделать связь затмения быстрее?

ответ

1

Укажите код и SQL-журнал. Также укажите код JDBC и убедитесь, что он кошерный (закрывающие утверждения и т. Д.).

Вы используете предварительное распределение последовательностей? Если нет, то вы не будете получать какие-либо партии (проверьте свой SQL-журнал, чтобы узнать, происходит ли пакет).

Я бы не изменил настройки пула соединений по умолчанию, ваши менее эффективны, чем по умолчанию (начальный 1, мин 32, максимум 32, без отдельного пула чтения/записи). Наличие разного min/max приведет к дросселированию соединения, что плохо.

See, http://java-persistence-performance.blogspot.com/2011/06/how-to-improve-jpa-performance-by-1825.html

Поскольку JPA работает поверх JDBC, всегда займет больше времени, чем полностью оптимизированный код JDBC. Но имеет преимущество, позволяя вам использовать объекты Java, а не писать код JDBC, и делать большую оптимизацию, такую ​​как пакетная запись, просто изменяя флаг, вместо того, чтобы переписывать код.

Смежные вопросы