|
Многопоточное выполнение PL/SQL
|
|||
---|---|---|---|
#18+
Доброго всем времени суток! Уважаемые DBA, подскажите пожалуйста, как будет работать pl/sql на Оракле в плане многопоточности. Например, есть 2 таблицы с 10 млн записями. Делается обычный SELECT, таблицы джоинятся по какому-то ключу, применяются как-нибудь WHERE... Предположим, что выборки абсолютно разделяемые.. то есть, можно обрабатывать построчно, никаких коллизий не будет. Результат выборки просто записывается в третью таблицу. Чисто логически кажется, что, если я разделю такой plsql на порции - типа, для id - [1...100], [101... 200] и так далее, и запущу это одновременно с какого-то стороннего приложения, например, то все отработает быстрее, чем при запуске такого plsql "для всех id" на самом Oracle. Но я знаю, что Oracle сам не дурак, будет применять многопоточность для такого plsql тоже. Но она зависит от того, какая конфигурация Oracle - кол-во серверов, процессоры и т.п. Видел, что можно и указывать параллелизм, типа /*+ PARALLEL(4) */ - что-то вроде такого. Вот и вопрос - что будет гарантированно быстрее? Разбить на порции и запустить одновременно со стороннего приложения (с реиспользованием connection, не создавать каждый раз новое) или это все напрасно и то на то и выйдет? Прошу прощения, если вопрос глупый. Спасибо большое за ответы. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2020, 15:05 |
|
Многопоточное выполнение PL/SQL
|
|||
---|---|---|---|
#18+
Я читал https://docs.oracle.com/cd/E11882_01/server.112/e25523/parallel002.htm#i1006328 Но очень интересен ответ опытных практиков, которых здесь очень много. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2020, 15:09 |
|
Многопоточное выполнение PL/SQL
|
|||
---|---|---|---|
#18+
Однозначного ответа дать нельзя - слишком много неизвестных, возможностей и ограничений. Однако "все дороги ведут и в Чешские Будейовицы" (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2020, 15:26 |
|
Многопоточное выполнение PL/SQL
|
|||
---|---|---|---|
#18+
Oracle сам не дурак, будет применять многопоточность для такого plsql тоже Исходя из моего опыта, для SQL параллельность выполнения, при наличии соответствующих свободных ресурсов (процессор, память, диск), вполне себе работает. Для PL /SQL о возможности распараллеливания со стороны СУБД не знаю. Боюсь, что это, мягко говоря, непросто автоматизировать. Со стороны приложения - смотрите использование ресурсов и распараллеливайте на здоровье. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2020, 17:02 |
|
Многопоточное выполнение PL/SQL
|
|||
---|---|---|---|
#18+
dmdmdm Для PL /SQL о возможности распараллеливания со стороны СУБД не знаю. Боюсь, что это, мягко говоря, непросто автоматизировать. 1. dbms_parallel_execute 2. pipelined parallel enabled ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2020, 17:09 |
|
|
start [/forum/topic.php?fid=52&fpage=49&tid=1881366]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
others: | 285ms |
total: | 417ms |
0 / 0 |