|
|
|
Параллелим запрос
|
|||
|---|---|---|---|
|
#18+
Есть запроса вида Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Каждый селект по отдельности выполняется от 1-5 секунд, все вместе выполняются в районе минуты (это долго) Можно ли распараллелить запрос, разбив на части именно по union all-ам (в надежде, что будет немного быстрее)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 12:28:54 |
|
||
|
Параллелим запрос
|
|||
|---|---|---|---|
|
#18+
google ? https://docs.oracle.com/database/121/VLDBG/GUID-1F4C90F9-3EF5-423A-B55B-2593FB3F1433.htm Не факт, что параллельно будет в N-раз быстрее. Если все "стоит колом" на обращение к дискам, то от параллелности/последовательности разницы не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 12:33:18 |
|
||
|
Параллелим запрос
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevНе факт, что параллельно будет в N-раз быстрее. Если все "стоит колом" на обращение к дискам, то от параллелности/последовательности разницы не будет. Понятно, что не факт, и скорее всего, что не будет, но надо попробовать ) В 11.2 PQ_CONCURRENT_UNION не канает похоже. Найти бы пример или суть, как распараллелить через pipeline-функции (если это возможно, не используя scheduler и job-ы). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 12:44:44 |
|
||
|
Параллелим запрос
|
|||
|---|---|---|---|
|
#18+
ParallelQКаждый селект по отдельности выполняется от 1-5 секундэто до первого фетча или возврат полного набора итоговых данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 12:47:14 |
|
||
|
Параллелим запрос
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эхэто до первого фетча или возврат полного набора итоговых данных? Полный набор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 12:49:59 |
|
||
|
Параллелим запрос
|
|||
|---|---|---|---|
|
#18+
ParallelQ, tab1 ... tab6 - это просто таблицы или запросы с условиями where? Если второе, что оптимизатор любит искать в таких unionах одинаковые условия в where и выность их наружу из union. Что, разумеется, ломает планы внутренних запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 12:50:20 |
|
||
|
Параллелим запрос
|
|||
|---|---|---|---|
|
#18+
ParallelQ, ParallelQНайти бы пример или суть, как распараллелить через pipeline-функции (если это возможно, не используя scheduler и job-ы). Распараллельте физически любым из способов: периодическое асинхронное выполнение набора процедур Внутрях там, правда, все равно джобы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 12:53:33 |
|
||
|
Параллелим запрос
|
|||
|---|---|---|---|
|
#18+
Egoроптимизатор любит искать в таких unionах одинаковые условия в where и выность их наружу из union. Запросы с условиями, но по плану вроде ничего не выносит. pihelРаспараллельте физически любым из способов Спасибо, видел, но во-первых, не понял механизм, во-вторых, предположим, делаю несколько pipeline. Не пойму как потом собрать их результат в кучу и вообще как получить результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 13:07:55 |
|
||
|
Параллелим запрос
|
|||
|---|---|---|---|
|
#18+
ParallelQ, Можно сделать пипелин, который запускает несколько процессов и ожидает от них данные через pipe или aq. Плюс, контролирует завершение всех процессов через тот же механизм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 13:14:00 |
|
||
|
Параллелим запрос
|
|||
|---|---|---|---|
|
#18+
ParallelQЗапросы с условиями, но по плану вроде ничего не выносит. я тоже так думал пока не наткнулся. Такое Код: plsql 1. пришлось написать так Код: plsql 1. Планы Oracle при этом тоже рисовал замечательные. pihel... как потом собрать их результат в кучу и вообще как получить результат. Зависит от того, что потом нужно делать с результатом. Можно, например, сложить в промежуточную таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 13:16:02 |
|
||
|
Параллелим запрос
|
|||
|---|---|---|---|
|
#18+
EgoрЗависит от того, что потом нужно делать с результатом. Можно, например, сложить в промежуточную таблицу. Придется юзать постоянную таблицу с генерацией уникальных id запросов и т.д., что вряд ли будет сильно эффективнее, а во временные складывать в других потоках смысла нет, не увидишь потом, так ведь? И самое главное - dml-ить нельзя - т.к. обращение к функции, где этот запрос идет как Код: plsql 1. -2-Можно сделать пипелин, который запускает несколько процессов и ожидает от них данные через pipe или aq. Плюс, контролирует завершение всех процессов через тот же механизм. Не знаю прокатит ли, посмотрю пайп, хотя запускать-то все равно через джобы... Видимо, пока без вариантов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2016, 13:26:50 |
|
||
|
|

start [/forum/topic.php?fid=52&fpage=215&tid=1888003]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
| others: | 210ms |
| total: | 347ms |

| 0 / 0 |
