troy написал(а):
Черт его знает, почему так медленно работало. Для интереса проверил сейчас скорость чтения DBF во внутреннюю таблицу (без записи в БД). В диалоге 8-10 мин, в фоне чууть медленнее.
Действительно, подшаманил ещё, чтение DBF и парсинг стали занимать 6 минут.
Соответственно вместе с записью в БД:
Цитата:
Header_Length 1.185
Record_Length 605
Records Count 2.876.269
Time Begin 15:51:17
Time End 17:24:44
Time 01:33:27
Теперь основное время занимает запись в БД, результат 1.5 часа на ~3 млн. записей более-менее терпимый для SAP.
Хотя я скорость ~550 зап./сек. считаю просто черепашьей, хотя бы 10тыс./сек минимум. Ну, возможно, дело уже в моём ноутбуке. Хотя даже Foxpro на стареньком Pentium 233MHz и то кажется быстрее работал.

Один момент - я чтение/запись делаю пачками по 20 тыс. записей, после каждой пачки Commit. Если делать Commit после каждой записи, то работать будет заметно медленнее.
Если пачки делать большими, например, по 1 млн. записей (или вообще всю таблицу целиком), то СУБД будет создавать большую область Rollback, возможно будет её расширять на диске, а после commit копировать данные из неё в оригинальную таблицу и чистить область Rollback. Это тоже может отнимать больше времени или вообще не записать данные, т.к. не хватит пространства под расширение Rollback.
Может у вас что-то подобное случилось, как часто делаете Commit?