FM_Xenon
Дата: 30.09.2005 16:26:34
Дано: Access 2002 с таблицей ~10 полей(длинное целое)*1164000 строк, IB 6.x.
Надо: Перекачать данные из Акса в АйБи. Решил воспользоваться EMS IB Manager'ом (триальный DataPump берется качать тока 100 записей).
Дрова: ODBC Jet 4.0 for MS Access.
Настройка: commit после 100 insert'ов.
В итоге:
Первая тысяча - 150 записей в секунду.
Пятая тысяча - 50 записей в секунду.
Ближе к тридцати тыс. - 1 запись в секунду.
... ушел из офиса комп (P4 Prescott 3 GHz* 1 Gb PC3200/SysBus 800 MHz) включен - качает.
Прошло десять часов - 110 000 тыс. записей, скорость - 1 запись за 2,5 секунды! Мозг, без оформления мыслей в слова отдал команду: "Прекратить немедленно!". Все это время проц загружен на 50%(ГиперТрейдинг - мать его!)
Вопрос: это что?! Особенности добавления новых записей ИнтерБейса или шутки триальной версии EMS'a?
Каких-то хитрых настроек кэша я не нашел - оптимизировать не чего.
Прикинул прогрессию замедления скорости - ручками быстрее(значительно) получиться все перебить!
Может быстрее на дельфях, в цикле все перегнать?!
P.S.: Честно говоря, у меня, доверия ко всей серии EMS малость поубавилось. Этож чем там проц целых 2500 ms с одной записью делает? Очень интересно!
Слышал, что есть чудо-программа ERwin (3.x - 4.x), но ценник на нее меня убил - от 700 до 3500 уе (а на 100 рублевых дисках, пираты, падлы "забывают" к ней product.dat записывать. В итоге keygen посылает чуть дальше FAQ'a)! И это еще не факт, что она будет полезна.
Лентяй
Дата: 30.09.2005 16:35:12
FM_Xenon |
Может быстрее на дельфях, в цикле все перегнать?!
|
Да, будет быстрее. Берешь IbSql, пишешь туда Insert. Один раз prepare и в цикле заполняя параметры вставляешь. Транзакцию коммитишь через, скажем, каждые 5000 записей.
P.S. А за IB6.x тебя щас будут бить...