powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Механизмы очень-очень быстрой записи в БД Oracle.
25 сообщений из 57, страница 1 из 3
Механизмы очень-очень быстрой записи в БД Oracle.
    #39903678
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Компоненты DOA. Пишу в базу через хранимую процедуру записи блоками по 50000, в качестве параметра передаю массивы, скорость работы меня не удовлетворяет. 50 -100 потоков вгоняют в ступор клиента oracle(OCI.dll) x64.
Подскажите быстрые механизмы механизмы записи в БД. Может кто-нибудь распределенную систему делал по записи?
...
Рейтинг: 0 / 0
Механизмы очень-очень быстрой записи в БД Oracle.
    #39903679
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробовал FireDac, но там еще медленнее, хотя его не очень умею готовить
...
Рейтинг: 0 / 0
Механизмы очень-очень быстрой записи в БД Oracle.
    #39903696
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrb50 -100 потоков вгоняют в ступор клиента oracle(OCI.dll) x64

Они вгонят в ступор кого угодно. Некоторые упадут под стол от смеха, другие - убьются
фейспалмом.

Быстрее Array DML у Оракула только Direct Load, но я сомневаюсь, что DOA его поддерживают.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Механизмы очень-очень быстрой записи в БД Oracle.
    #39903706
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Direct Load, но я сомневаюсь, что DOA его поддерживают.
надцать лет тому - поддерживали...
...
Рейтинг: 0 / 0
Механизмы очень-очень быстрой записи в БД Oracle.
    #39903720
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, это да, но мне не понятно почему 50 потоков грузят ЦП только на 15 %. Хотя в исходниках DOA присутствуют крит. секции при обращении к OCI.dll, но не так же все плохо должно быть
...
Рейтинг: 0 / 0
Механизмы очень-очень быстрой записи в БД Oracle.
    #39903723
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то мне подсказывает, что если отломать те оптимизации, которые применил автор, то закачка пойдёт куда быстрее.

P.S. В стандартный комплект поставки Oracle входит такая утилита, sql*loader. В документации есть её подробное описание. Скорми ей свои данные и посмотри, с какой скоростью их вставит она в разных режимах. Если у тебя скорость вставки будет сравнимой - считай, что ты добился оптимума как минимум с клиентской стороны. Если ниже - увидишь, куда расти.
...
Рейтинг: 0 / 0
Механизмы очень-очень быстрой записи в БД Oracle.
    #39903725
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Завтра попробую напрямую, но что-то мне подсказывает, что есть более элегантные решения. А то получается, сначала создай таблицу,
потом переложи в основную таблицу и так далее. Накладных расходов куча, а ЦП не загружается
...
Рейтинг: 0 / 0
Механизмы очень-очень быстрой записи в БД Oracle.
    #39903728
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вероятно все упирается не в CPU а в HDD.
Или вообще в Network.
...
Рейтинг: 0 / 0
Механизмы очень-очень быстрой записи в БД Oracle.
    #39903734
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrb,

Я тоже пытался сначала через FireDAC Array DML, в многопоточном режиме, потом оказалось, что посредством SQL*Loader'а, тоже в многопоточном, результаты несравнимо лучше. Сам объясняю это исключением из процесса блокировочного дельфийского менеджера памяти при формировании/закладке параметров.
Потому и ЦПУ недозагружен.
...
Рейтинг: 0 / 0
Механизмы очень-очень быстрой записи в БД Oracle.
    #39903742
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat, почему HDD? а с сетью все неплохо, более 70мб/с не поднимается
...
Рейтинг: 0 / 0
Механизмы очень-очень быстрой записи в БД Oracle.
    #39903753
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrb,

Потому что если там не SDD то при столь высокой многопоточности вероятно упирание в лимит по перемещению головок HDD туда-сюда по блинам.

Может оказаться что снижение количества потоков в разы приведет к увеличению суммарной производительности ибо последовательная запись на HDD всегда быстрей случайной.
...
Рейтинг: 0 / 0
Механизмы очень-очень быстрой записи в БД Oracle.
    #39903782
bk0010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat
Может оказаться что снижение количества потоков в разы приведет к увеличению суммарной производительности ибо последовательная запись на HDD всегда быстрей случайной.
NSQ уже не работает?
...
Рейтинг: 0 / 0
Механизмы очень-очень быстрой записи в БД Oracle.
    #39903784
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bk0010
NSQ уже не работает?
NSQ - технология оптимизации а не волшебство решающее все проблемы на корню.
...
Рейтинг: 0 / 0
Механизмы очень-очень быстрой записи в БД Oracle.
    #39903786
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сравни скорость записи последовательно и случайно.

В отличие от SDD на HDD рандомная запись с глубиной очереди в 32 записи ничем не быстрей простого рандома.
...
Рейтинг: 0 / 0
Механизмы очень-очень быстрой записи в БД Oracle.
    #39903798
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrbмне не понятно почему 50 потоков грузят ЦП только на 15 %.
а может параллельное где-то превращается в непараллельное? например, или в клиенте Оракла, или при вставке в одну таблицу, или при вызове одной хранимой процедуры?
...
Рейтинг: 0 / 0
Механизмы очень-очень быстрой записи в БД Oracle.
    #39903812
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrb
но мне не понятно почему 50 потоков грузят ЦП только на 15 %

А почему они грузить на 100? У тебя ос нихрена не делает уже после 10-го, кроме переключения контекста между потоками (которое очень дорогое) и ожидания IO. Больше потоков не значит лучше.
...
Рейтинг: 0 / 0
Механизмы очень-очень быстрой записи в БД Oracle.
    #39903813
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

cptngrb50 -100 потоков вгоняют в ступор клиента oracle(OCI.dll) x64

Они вгонят в ступор кого угодно. Некоторые упадут под стол от смеха, другие - убьются
фейспалмом.

Быстрее Array DML у Оракула только Direct Load, но я сомневаюсь, что DOA его поддерживают.

Плюсуюсь.

Вброс гуана, без единой строчки кода.

Даже чисто теоретически, кол-во потоков на загрузку может быть лишь чуть-чуть больше, чем кол-во процессоров на сервере. Это даже забыв о дисковой подсистеме сервера.

Dimitry Sibiryakov

Direct Load

cptngrb
Пишу в базу через хранимую процедуру записи

)))
...
Рейтинг: 0 / 0
Механизмы очень-очень быстрой записи в БД Oracle.
    #39903823
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кол-во ядер 58, SSD
...
Рейтинг: 0 / 0
Механизмы очень-очень быстрой записи в БД Oracle.
    #39903825
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,
я спрашиваю про подход записи в БД большого кол-ва записи, а не найдите ошибку в коде.
...
Рейтинг: 0 / 0
Механизмы очень-очень быстрой записи в БД Oracle.
    #39903828
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrb,

А подключений сколько?
...
Рейтинг: 0 / 0
Механизмы очень-очень быстрой записи в БД Oracle.
    #39903837
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster, если спрашиваете про кол-во сессий, то в каждом потоке своя, а пул сессий общий
...
Рейтинг: 0 / 0
Механизмы очень-очень быстрой записи в БД Oracle.
    #39903848
zinpub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Отключение триггеров, индексов(на момент загрузки) не рассматривал? Ну то есть DirectLoad, только есть возможность отключать не всё.

Когда у меня вставала подобная задача, то делал через ODAC-TOraLoader, в несколько потоков(разумное - больше 8 прироста уже не давало)
...
Рейтинг: 0 / 0
Механизмы очень-очень быстрой записи в БД Oracle.
    #39903867
Фотография devart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ODAC позволяет вставлять дынные очень быстро через DML Array:
https://www.devart.com/odac/docs/work_dml.htm
и очень-очень быстро через TOraLoader:
https://www.devart.com/odac/docs/work_toraloader.htm
...
Рейтинг: 0 / 0
Механизмы очень-очень быстрой записи в БД Oracle.
    #39903871
zinpub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Только надо очень чётко понимать - как работает TOraLoader...
...
Рейтинг: 0 / 0
Механизмы очень-очень быстрой записи в БД Oracle.
    #39903875
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zinpub, в принципе везде надо понимать что и как работает.
Для прямой загрузке мне из базы нужно дергать название таблицы, а потом уже писать в нее, т.к. я не имею права сам создавать таблицы и накладные расходы на создание таблицы, передача ее названия опять же через запрос... вообщем нужно будет потестить
...
Рейтинг: 0 / 0
25 сообщений из 57, страница 1 из 3
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Механизмы очень-очень быстрой записи в БД Oracle.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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