![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Загрузка данных в Oracle [D5, Oracle]
id_privin © (2002-06-20 19:55:00)Профи, помогите!
Ситуация : загружаю данные в Oracle, для этого в Query пишу insert .... и в Variables кладу массивы данных.
Проблема : когда массивы короткие (до 1000 записей) все отлично,
а когда больше (2000 и более) то программа начинает жрать память ( >100M) и дико тормозить( 1000 записей - ~2с, а 6000 - больше минуты).
Если кто знает в чем дело, и как с этим бороться помогите пожалуйста.
Yuvich (2002-06-21 14:11:00) [1]Я думаю, это присходит от того, что запись всех данных происходит в одной транзакции, поэтому для большого количества записей Оракле тратит много времени на запись в rollback сегмент.
Единственный путь - делать транзакции короче: одна запись (группа записей, связанных между собой логически) - одна транзакция или пакет записей ( >100, <1000) - одна транзакция.
Другой путь - сделать загрузку данных вне транзакции: перевести сервер (сессию) в режим not logged и загрузить данные, при этом кол-во записей не имеет значения. Но это, скорее всего, надо делать на сервере и из файла, например Лоадером.