|
|
|
Механизмы очень-очень быстрой записи в БД Oracle.
|
|||
|---|---|---|---|
|
#18+
Компоненты DOA. Пишу в базу через хранимую процедуру записи блоками по 50000, в качестве параметра передаю массивы, скорость работы меня не удовлетворяет. 50 -100 потоков вгоняют в ступор клиента oracle(OCI.dll) x64. Подскажите быстрые механизмы механизмы записи в БД. Может кто-нибудь распределенную систему делал по записи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2019, 19:14 |
|
||
|
Механизмы очень-очень быстрой записи в БД Oracle.
|
|||
|---|---|---|---|
|
#18+
пробовал FireDac, но там еще медленнее, хотя его не очень умею готовить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2019, 19:16 |
|
||
|
Механизмы очень-очень быстрой записи в БД Oracle.
|
|||
|---|---|---|---|
|
#18+
cptngrb50 -100 потоков вгоняют в ступор клиента oracle(OCI.dll) x64 Они вгонят в ступор кого угодно. Некоторые упадут под стол от смеха, другие - убьются фейспалмом. Быстрее Array DML у Оракула только Direct Load, но я сомневаюсь, что DOA его поддерживают. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2019, 19:59 |
|
||
|
Механизмы очень-очень быстрой записи в БД Oracle.
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Direct Load, но я сомневаюсь, что DOA его поддерживают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2019, 20:41 |
|
||
|
Механизмы очень-очень быстрой записи в БД Oracle.
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, это да, но мне не понятно почему 50 потоков грузят ЦП только на 15 %. Хотя в исходниках DOA присутствуют крит. секции при обращении к OCI.dll, но не так же все плохо должно быть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2019, 21:23 |
|
||
|
Механизмы очень-очень быстрой записи в БД Oracle.
|
|||
|---|---|---|---|
|
#18+
Что-то мне подсказывает, что если отломать те оптимизации, которые применил автор, то закачка пойдёт куда быстрее. P.S. В стандартный комплект поставки Oracle входит такая утилита, sql*loader. В документации есть её подробное описание. Скорми ей свои данные и посмотри, с какой скоростью их вставит она в разных режимах. Если у тебя скорость вставки будет сравнимой - считай, что ты добился оптимума как минимум с клиентской стороны. Если ниже - увидишь, куда расти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2019, 21:28 |
|
||
|
Механизмы очень-очень быстрой записи в БД Oracle.
|
|||
|---|---|---|---|
|
#18+
Завтра попробую напрямую, но что-то мне подсказывает, что есть более элегантные решения. А то получается, сначала создай таблицу, потом переложи в основную таблицу и так далее. Накладных расходов куча, а ЦП не загружается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2019, 21:29 |
|
||
|
Механизмы очень-очень быстрой записи в БД Oracle.
|
|||
|---|---|---|---|
|
#18+
Вероятно все упирается не в CPU а в HDD. Или вообще в Network. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2019, 21:34 |
|
||
|
Механизмы очень-очень быстрой записи в БД Oracle.
|
|||
|---|---|---|---|
|
#18+
cptngrb, Я тоже пытался сначала через FireDAC Array DML, в многопоточном режиме, потом оказалось, что посредством SQL*Loader'а, тоже в многопоточном, результаты несравнимо лучше. Сам объясняю это исключением из процесса блокировочного дельфийского менеджера памяти при формировании/закладке параметров. Потому и ЦПУ недозагружен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2019, 21:38 |
|
||
|
Механизмы очень-очень быстрой записи в БД Oracle.
|
|||
|---|---|---|---|
|
#18+
rgreat, почему HDD? а с сетью все неплохо, более 70мб/с не поднимается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2019, 21:59 |
|
||
|
Механизмы очень-очень быстрой записи в БД Oracle.
|
|||
|---|---|---|---|
|
#18+
cptngrb, Потому что если там не SDD то при столь высокой многопоточности вероятно упирание в лимит по перемещению головок HDD туда-сюда по блинам. Может оказаться что снижение количества потоков в разы приведет к увеличению суммарной производительности ибо последовательная запись на HDD всегда быстрей случайной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2019, 22:30 |
|
||
|
Механизмы очень-очень быстрой записи в БД Oracle.
|
|||
|---|---|---|---|
|
#18+
rgreat Может оказаться что снижение количества потоков в разы приведет к увеличению суммарной производительности ибо последовательная запись на HDD всегда быстрей случайной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2019, 00:10 |
|
||
|
Механизмы очень-очень быстрой записи в БД Oracle.
|
|||
|---|---|---|---|
|
#18+
bk0010 NSQ уже не работает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2019, 00:27 |
|
||
|
Механизмы очень-очень быстрой записи в БД Oracle.
|
|||
|---|---|---|---|
|
#18+
Сравни скорость записи последовательно и случайно. В отличие от SDD на HDD рандомная запись с глубиной очереди в 32 записи ничем не быстрей простого рандома. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2019, 00:41 |
|
||
|
Механизмы очень-очень быстрой записи в БД Oracle.
|
|||
|---|---|---|---|
|
#18+
cptngrbмне не понятно почему 50 потоков грузят ЦП только на 15 %. а может параллельное где-то превращается в непараллельное? например, или в клиенте Оракла, или при вставке в одну таблицу, или при вызове одной хранимой процедуры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2019, 02:26 |
|
||
|
Механизмы очень-очень быстрой записи в БД Oracle.
|
|||
|---|---|---|---|
|
#18+
cptngrb но мне не понятно почему 50 потоков грузят ЦП только на 15 % А почему они грузить на 100? У тебя ос нихрена не делает уже после 10-го, кроме переключения контекста между потоками (которое очень дорогое) и ожидания IO. Больше потоков не значит лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2019, 06:41 |
|
||
|
Механизмы очень-очень быстрой записи в БД Oracle.
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov cptngrb50 -100 потоков вгоняют в ступор клиента oracle(OCI.dll) x64 Они вгонят в ступор кого угодно. Некоторые упадут под стол от смеха, другие - убьются фейспалмом. Быстрее Array DML у Оракула только Direct Load, но я сомневаюсь, что DOA его поддерживают. Плюсуюсь. Вброс гуана, без единой строчки кода. Даже чисто теоретически, кол-во потоков на загрузку может быть лишь чуть-чуть больше, чем кол-во процессоров на сервере. Это даже забыв о дисковой подсистеме сервера. Dimitry Sibiryakov Direct Load cptngrb Пишу в базу через хранимую процедуру записи ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2019, 06:50 |
|
||
|
Механизмы очень-очень быстрой записи в БД Oracle.
|
|||
|---|---|---|---|
|
#18+
кол-во ядер 58, SSD ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2019, 07:52 |
|
||
|
Механизмы очень-очень быстрой записи в БД Oracle.
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, я спрашиваю про подход записи в БД большого кол-ва записи, а не найдите ошибку в коде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2019, 07:55 |
|
||
|
Механизмы очень-очень быстрой записи в БД Oracle.
|
|||
|---|---|---|---|
|
#18+
cptngrb, А подключений сколько? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2019, 07:57 |
|
||
|
Механизмы очень-очень быстрой записи в БД Oracle.
|
|||
|---|---|---|---|
|
#18+
crutchmaster, если спрашиваете про кол-во сессий, то в каждом потоке своя, а пул сессий общий ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2019, 08:31 |
|
||
|
Механизмы очень-очень быстрой записи в БД Oracle.
|
|||
|---|---|---|---|
|
#18+
Отключение триггеров, индексов(на момент загрузки) не рассматривал? Ну то есть DirectLoad, только есть возможность отключать не всё. Когда у меня вставала подобная задача, то делал через ODAC-TOraLoader, в несколько потоков(разумное - больше 8 прироста уже не давало) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2019, 08:48 |
|
||
|
Механизмы очень-очень быстрой записи в БД Oracle.
|
|||
|---|---|---|---|
|
#18+
ODAC позволяет вставлять дынные очень быстро через DML Array: https://www.devart.com/odac/docs/work_dml.htm и очень-очень быстро через TOraLoader: https://www.devart.com/odac/docs/work_toraloader.htm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2019, 10:09 |
|
||
|
Механизмы очень-очень быстрой записи в БД Oracle.
|
|||
|---|---|---|---|
|
#18+
Только надо очень чётко понимать - как работает TOraLoader... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2019, 10:19 |
|
||
|
Механизмы очень-очень быстрой записи в БД Oracle.
|
|||
|---|---|---|---|
|
#18+
zinpub, в принципе везде надо понимать что и как работает. Для прямой загрузке мне из базы нужно дергать название таблицы, а потом уже писать в нее, т.к. я не имею права сам создавать таблицы и накладные расходы на создание таблицы, передача ее названия опять же через запрос... вообщем нужно будет потестить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2019, 10:23 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39903825&tid=2038761]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
168ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
72ms |
get tp. blocked users: |
2ms |
| others: | 236ms |
| total: | 526ms |

| 0 / 0 |
