powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TOraLoader
4 сообщений из 54, страница 3 из 3
TOraLoader
    #39840008
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов ЮрийdevartНет, данные в PutColumnData вы заполняете одинаково в обоих режимах. В режиме lmDML компонент TOraLoader сам преобразует их в DML Array и в виде массива отправит на сервер.

Тогда тоска... Миллион записей 10 минут гонял. За это же время SQLLoader загнал 20 лямов
Дык, режь данные на куски в виде файлов и запускай с ними SQLLoader-ы в отдельных потоках. Проведенные эксперименты показали, что быстрее все равно ничего не будет.
...
Рейтинг: 0 / 0
TOraLoader
    #39840073
Фотография devart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов ЮрийdevartНет, данные в PutColumnData вы заполняете одинаково в обоих режимах. В режиме lmDML компонент TOraLoader сам преобразует их в DML Array и в виде массива отправит на сервер.

Тогда тоска... Миллион записей 10 минут гонял. За это же время SQLLoader загнал 20 лямов
Мы исследовали описанное вами поведение. Такая разница в скорости вставки обусловленна тем, что в режиме lmDML вставка производится блоками по 100 записей. К сожалению опции, которая повлияла бы на данное поведение в настоящий момент нет. Поэтому для ускорения вставки мы можем вам порекомендовать два решенеия:

Первое, если у вас ODAC с исходным кодом, то вы можете отрыть файл OraClasses.pas и найти там строчку (в методе TOCILoader.Prepare):
Код: pascal
1.
FBufNumRows := 100;


и попробовать заменить значение 100 на значение 1000 или на 10000. скорость вставки должна значительно увеличится.

Второй способ - это самостоятельно реализовать вставку через DML arrays, как описано здесь https://www.devart.com/odac/docs/batchops.htm
В этом случае также необходимо подобрать оптимальное значение для количества строк вставляемых за раз. При самостоятельной реализации вставки через DML array следует избегать использования метода ParamByName() и обращаться к параметрам по индексу, иначе вызов метода ParamByName() миллион раз для каждого араметра может очень сильно снизить производительность.
...
Рейтинг: 0 / 0
TOraLoader
    #39842033
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
devartМы исследовали описанное вами поведение. Такая разница в скорости вставки обусловлена тем, что в режиме lmDML вставка производится блоками по 100 записей. К сожалению опции, которая повлияла бы на данное поведение в настоящий момент нет. Поэтому для ускорения вставки мы можем вам порекомендовать два решения:

Первое, если у вас ODAC с исходным кодом, то вы можете отрыть файл OraClasses.pas и найти там строчку (в методе TOCILoader.Prepare):
Код: pascal
1.
FBufNumRows := 100;


и попробовать заменить значение 100 на значение 1000 или на 10000. скорость вставки должна значительно увеличится.

Второй способ - это самостоятельно реализовать вставку через DML arrays, как описано здесь https://www.devart.com/odac/docs/batchops.htm
В этом случае также необходимо подобрать оптимальное значение для количества строк вставляемых за раз. При самостоятельной реализации вставки через DML array следует избегать использования метода ParamByName() и обращаться к параметрам по индексу, иначе вызов метода ParamByName() миллион раз для каждого араметра может очень сильно снизить производительность.

Попробовал оба варианта. Немного причесал код (были проблемы со значениями, может поэтому грузило очень долго). Теперь миллионник залетает за 2 минуты)) Это через TOraLoader.
Практически тот же код, но через TOraSQL и DML Array зашел за 4 минуты. Блоки по 65000 записей
...
Рейтинг: 0 / 0
TOraLoader
    #39842034
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю, что на данном этапе проблема решена. Спасибо всем за участие. Особая благодарность "zinpub" и "devart" !
...
Рейтинг: 0 / 0
4 сообщений из 54, страница 3 из 3
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TOraLoader
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]