Домучиваю потихоньку перенос КЛАДР в Firebird. Ну а для этого основная операция - вставка громадного числа записей.
Первоначально шел по пути обработки данных из dbf КЛАДРа на клиенте, и вставке их на сервер. Отключал индексы на таблице, вставлял по одной записи (т.е. не блок из нескольких), коммитил через 1000 вставок. Скрость работы примерно минут 30-40 на 1000000 записей кладра.
Потом узнал о external table. Не сложной манипуляцией dbf файл адоптируется в нужный вид(обрезаем заголовок ), кидается на сервер. На сервере мы его подключаем как внешнюю таблицу и работаем с ним. Плюс написал хранимые процедуры для обработки данных и вставки их (то, что раньше делал на клиенте). Итог - не считая подготовления файлов (а оно занимает от силы не более минуты), этот же миллион записей загрузился за 3,5 минуты.
клиент в первом случае и сервер во втором это одна и таже машина.
Доволен как удав :-)
Здравствуйте!
ОтветитьУдалитьУ меня вопрос - а как Вы отключали индексы?
Я вот пытался отключить через "ALTER INDEX IndexName ACTIVE/INACTIVE" но это не помогло, я так понимаю оно влияет только на чтение. Помогло только DROP Index.
Спасибо.
Приветсвую.
ОтветитьУдалитьВообще ALTER INDEX должен помочь. Влияет оно и на чтение и на запись. При отключенном идексе чтение медленнее идет, при включенном запись. Надо проверять на конкретной версии firebird`а.
конкретнее подсказать уже не смогу, т.к. ушел от firebird и delphi в сторону oracle. И походу не предвидится возвращение.