понедельник, 14 июня 2010 г.

Java проблемы новичка. Часть 2

Итак, вот ещё набор заметок о том, как использовать Java

воскресенье, 6 июня 2010 г.

Освоение BulkInsert

Хочу поделиться своими впечатлениями о технологии BulkInsert для FireBird.

Возникла задача еженедельного обновления справочника в БД из внешнего присылаемого файла. Справочник оказался не маленьким, примерно 1150000 записей, размер csv файла составляет 26МБ.

На первых шагах, для исполнения задания, было принято самое простое решение, а именно, чтение строки из файла, её преобразование и загрузка в БД.

Проблема возникла в том, что после первой загрузки, удалять данные нельзя поскольку на них могут ссылаться из других таблиц, а значит, что при повторной загрузке, старые данные должны быть обновлены, а новые добавлены.
Для решения данной проблемы была разработана логика по определению того, что необходимо сделать, обновить запись или вставить новую. Как результат всех стараний время работы процедуры составило около 6 часов работы, это примерно по 3500 записей в минуту. Данный результат абсолютно не устраивал и пришлось искать решение.

Пшеничный Николай Юрьевич посоветовал использовать BulkInsert, было обещано многократное ускорение.