Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Многопоточное выполнение PL/SQL / 6 сообщений из 6, страница 1 из 1
11.04.2020, 15:05
    #39946157
Большой Синий Кит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное выполнение PL/SQL
Доброго всем времени суток!

Уважаемые DBA, подскажите пожалуйста, как будет работать pl/sql на Оракле в плане многопоточности.
Например, есть 2 таблицы с 10 млн записями. Делается обычный SELECT, таблицы джоинятся по какому-то ключу, применяются как-нибудь WHERE...
Предположим, что выборки абсолютно разделяемые.. то есть, можно обрабатывать построчно, никаких коллизий не будет.

Результат выборки просто записывается в третью таблицу.

Чисто логически кажется, что, если я разделю такой plsql на порции - типа, для id - [1...100], [101... 200] и так далее, и запущу это одновременно с какого-то стороннего приложения, например, то все отработает быстрее, чем при запуске такого plsql "для всех id" на самом Oracle. Но я знаю, что Oracle сам не дурак, будет применять многопоточность для такого plsql тоже. Но она зависит от того, какая конфигурация Oracle - кол-во серверов, процессоры и т.п. Видел, что можно и указывать параллелизм, типа /*+ PARALLEL(4) */ - что-то вроде такого.

Вот и вопрос - что будет гарантированно быстрее? Разбить на порции и запустить одновременно со стороннего приложения (с реиспользованием connection, не создавать каждый раз новое) или это все напрасно и то на то и выйдет? Прошу прощения, если вопрос глупый.

Спасибо большое за ответы.
...
Рейтинг: 0 / 0
11.04.2020, 15:09
    #39946158
Большой Синий Кит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное выполнение PL/SQL
Я читал https://docs.oracle.com/cd/E11882_01/server.112/e25523/parallel002.htm#i1006328

Но очень интересен ответ опытных практиков, которых здесь очень много. :)
...
Рейтинг: 0 / 0
11.04.2020, 15:26
    #39946161
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное выполнение PL/SQL
Однозначного ответа дать нельзя - слишком много неизвестных, возможностей и ограничений.
Однако "все дороги ведут и в Чешские Будейовицы" (с)
...
Рейтинг: 0 / 0
11.04.2020, 17:02
    #39946190
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное выполнение PL/SQL
Oracle сам не дурак, будет применять многопоточность для такого plsql тоже

Исходя из моего опыта, для SQL параллельность выполнения, при наличии соответствующих свободных ресурсов (процессор, память, диск), вполне себе работает.

Для PL /SQL о возможности распараллеливания со стороны СУБД не знаю. Боюсь, что это, мягко говоря, непросто автоматизировать.

Со стороны приложения - смотрите использование ресурсов и распараллеливайте на здоровье.
...
Рейтинг: 0 / 0
11.04.2020, 17:09
    #39946192
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное выполнение PL/SQL
dmdmdm
Для PL /SQL о возможности распараллеливания со стороны СУБД не знаю. Боюсь, что это, мягко говоря, непросто автоматизировать.

1. dbms_parallel_execute
2. pipelined parallel enabled
...
Рейтинг: 0 / 0
11.04.2020, 17:55
    #39946201
feagor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное выполнение PL/SQL
andrey_anonymous,

3. Своё колдунство через нарезку нагрузки на джобы.

Большой Синий Кит, если 3 вариант интересен, стукнитесь в телегу, поделюсь наработками
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Многопоточное выполнение PL/SQL / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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