Вставки большой базы данных Java - PullRequest
3 голосов
/ 19 февраля 2010

У меня есть база данных, в которую мне нужно вставить пакеты данных (около 500 тыс. Записей одновременно). Я тестировал с дерби и видел время вставки около 10-15 минут для этого количества записей (я делал пакетную вставку в Java).

Это время кажется медленным (работает на обычном ноутбуке)? И есть ли подходы к его ускорению?

спасибо,

Jeff

Ответы [ 2 ]

5 голосов
/ 19 февраля 2010

Это время кажется вполне разумным и согласуется со временем, которое я наблюдал.Если вы хотите, чтобы он шел быстрее, вам нужно использовать параметры массовой вставки и отключить функции безопасности:

  • Использовать PreparedStatements и пакеты от 5000 до 10000 записей, если это НЕ ДОЛЖНА быть одна транзакция
  • Использоватьпараметры массовой загрузки в СУБД
  • Временное отключение проверок целостности для вставки
  • Временное отключение индексов или удаление индексов и их повторное создание после вставки
  • Отключение ведения журнала транзакций и повторного созданиявключить впоследствии.

РЕДАКТИРОВАТЬ: Транзакции базы данных ограничены дисковым вводом-выводом, и на ноутбуках и большинстве жестких дисков важным числом является время поиска для диска.

Ноутбуки, как правило, имеют довольно медленные диски со скоростью 5400 об / мин.На этой скорости время поиска составляет около 5 мс.Если мы предположим, что один запрос на запись (завышенная оценка в большинстве случаев), то для вставки всех строк потребуется 40 минут (500000 * 5 мс).Теперь использование механизмов кэширования и механизмов секвенирования несколько уменьшает это, но вы можете увидеть, откуда возникла проблема.

Я (конечно) сильно упрощаю проблему, но вы можете видеть, куда я иду с этим;неразумно ожидать, что базы данных будут работать с той же скоростью, что и последовательный массовый ввод-вывод.Вы должны применить какое-то индексирование к вашей записи, и на это нужно время.

0 голосов
/ 19 февраля 2010

Много ли в таблицах индексов?Много времени может быть потрачено на обновление этих индексов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...