2013-05-03 4 views
0

Я должен оптимизировать производительность базы данных (особенно вставки) определенного унаследованного инструмента. Инструмент написан на Java и для уровня доступа к данным Spring + HibernateTemplate был технологией выбора.Оптимизация вставок данных для HibernateTemplate

Настоящая проблема заключается в выполнении некоторых объемных вставок. Мы должны ввести более 50K данных по телефону HibernateTemplate.save() для каждого. Это, по-видимому, очень неэффективный способ, но из-за нехватки времени мы не можем изменить реализацию на данный момент.

Каковы будут шаблоны оптимизации, кроме изменения реализации?

ответ

1

Единственное, что я могу думать, если вы хотите, чтобы оптимизировать код без изменения кода являются:

  • попробовать большие значения для hibernate.jdbc.batch_size
  • использовать более быстрый диск и машина для базы данных

Если вы готовы слегка изменить код, следуйте the advices of the documentation и регулярно очищайте сеанс и очищаете сессию при вставке своих данных. Или используйте сеанс без состояния.

+0

Спасибо за ответ. Я не очень разбираюсь в hibernate и кешировании, но мне было интересно, помогут ли некоторые решения для кеш-серверов второго уровня? – archangle

+0

Кэш второго уровня ухудшит ситуацию. Кэш полезен при извлечении информации из базы данных, чтобы не попасть в базу данных и получить ее непосредственно из кеша. Но каждая вставка должна записываться в кеш в дополнение к записи в базу данных. –

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