powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Не могу завести никак PARALLEL в запросе с функцией
18 сообщений из 18, страница 1 из 1
Не могу завести никак PARALLEL в запросе с функцией
    #39894202
Zalm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем!
Никак не могу понять почему PARALLEL отказывается работать если в запросе есть функция?
подскажите пожалуйста есть ли возможность как-то завести его?

В таблице 1 миллион записей, надо по каждой строке рассчитать функцию и отсортировать по значению итоговому
Но работает это неприемлемо долго, то есть выходит за границы допустимого отклика в рамках задачи

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
select *
  from (
          select /*+ PARALLEL(8) */ 
                 utl_match.edit_distance_similarity(tt.col1,'test') val
            from temp_test tt
       ) lst
 order by lst.val desc       
       
...
Рейтинг: 0 / 0
Не могу завести никак PARALLEL в запросе с функцией
    #39894238
проходил мимо...
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zalm,

чисто в целях повышения общей образованности, а какое время отклика, с вашей точки зрения, приемлемо для сформулированной задачи?..
...
Рейтинг: 0 / 0
Не могу завести никак PARALLEL в запросе с функцией
    #39894241
user1048576
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Zalm,
/*+ no_query_transformation parallel(8)*/
кажись после этого появится "бутылычное горлышко" в самом конце.
...
Рейтинг: 0 / 0
Не могу завести никак PARALLEL в запросе с функцией
    #39894244
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zalm
не могу понять почему
Потому что не читал.
user1048576
/*+ no_query_transformation parallel(8)*/
Что в приведенном запросе могло бы трансформироваться?
...
Рейтинг: 0 / 0
Не могу завести никак PARALLEL в запросе с функцией
    #39894733
Zalm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проходил мимо...,

Сейчас работает 9-12 секунд, нужно хотя бы 2-3 секунды что бы было
...
Рейтинг: 0 / 0
Не могу завести никак PARALLEL в запросе с функцией
    #39894734
Zalm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user1048576
Zalm,
/*+ no_query_transformation parallel(8)*/
кажись после этого появится "бутылычное горлышко" в самом конце.


Не играет никакой роли(
...
Рейтинг: 0 / 0
Не могу завести никак PARALLEL в запросе с функцией
    #39894736
Zalm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-
Zalm
не могу понять почему
Потому что не читал.
user1048576
/*+ no_query_transformation parallel(8)*/
Что в приведенном запросе могло бы трансформироваться?


Подскажите пожалуйста что именно где можно прочитать по этой теме?
...
Рейтинг: 0 / 0
Не могу завести никак PARALLEL в запросе с функцией
    #39894738
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zalm
Сейчас работает 9-12 секунд, нужно хотя бы 2-3 секунды что бы было

Разница не большая при разовом выполнении, зачем нужно сокращать время выполнения? Как часто будет выполняться запрос? Функцию можно сделать детерменированной? Функция обращается к этой же или связанным таблицам?
...
Рейтинг: 0 / 0
Не могу завести никак PARALLEL в запросе с функцией
    #39894741
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zalm
-2-
Потому что не читал.
Подскажите пожалуйста что именно где можно прочитать по этой теме?
Приблизительно VLDB/Обработка параллельных запросов/Ограничения, страница 234, второй абзац
...
Рейтинг: 0 / 0
Не могу завести никак PARALLEL в запросе с функцией
    #39894749
Zalm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iOracleDev
Zalm
Сейчас работает 9-12 секунд, нужно хотя бы 2-3 секунды что бы было

Разница не большая при разовом выполнении, зачем нужно сокращать время выполнения? Как часто будет выполняться запрос? Функцию можно сделать детерменированной? Функция обращается к этой же или связанным таблицам?


Все действия происходят с одной таблицей всегда
детерменированной нельзя потому что входные данные всегда разные
выполняется от 40 до 65 тысяч раз в сутки, поэтому и нужно понять как улучшить

Есть аналогичная таблица, но меньшего объема, там выполняется 300 тысяч раз в сутки
...
Рейтинг: 0 / 0
Не могу завести никак PARALLEL в запросе с функцией
    #39894755
Zalm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-
Zalm
пропущено...
Подскажите пожалуйста что именно где можно прочитать по этой теме?
Приблизительно VLDB/Обработка параллельных запросов/Ограничения, страница 234, второй абзац


Интересно, пока не нашел конечно как что относится к Oracle и именно ту статью где как минимум 234 страницы, но по наводке много статей интересных
...
Рейтинг: 0 / 0
Не могу завести никак PARALLEL в запросе с функцией
    #39894768
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zalm
Все действия происходят с одной таблицей всегда
детерменированной нельзя потому что входные данные всегда разные
выполняется от 40 до 65 тысяч раз в сутки, поэтому и нужно понять как улучшить

Есть аналогичная таблица, но меньшего объема, там выполняется 300 тысяч раз в сутки

DETERMINISTIC-clause

В таблицу добавить поле и результат расчета триггером писать в добавленное поле, индекс опционально, если результат расчета нужен исключительно для сортировки, то можно обойтись FBI.
...
Рейтинг: 0 / 0
Не могу завести никак PARALLEL в запросе с функцией
    #39894783
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Zalm,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
select *
  from (
          select /*+ PARALLEL(8) no_merge */ 
                 utl_match.edit_distance_similarity(tt.col1,'test') val
            from temp_test tt
       ) lst
 order by lst.val desc


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
Plan hash value: 3385394582

-------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                    | Name      | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |    TQ  |IN-OUT| PQ Distrib |
-------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT             |           |       |       |       |   465 (100)|          |        |      |            |
|   1 |  PX COORDINATOR FORCED SERIAL|           |       |       |       |            |          |        |      |            |
|   2 |   PX SEND QC (ORDER)         | :TQ10001  | 72967 |   926K|       |   465   (1)| 00:00:01 |  Q1,01 | P->S | QC (ORDER) |
|   3 |    SORT ORDER BY             |           | 72967 |   926K|  1440K|   465   (1)| 00:00:01 |  Q1,01 | PCWP |            |
|   4 |     PX RECEIVE               |           | 72967 |   926K|       |   116   (1)| 00:00:01 |  Q1,01 | PCWP |            |
|   5 |      PX SEND RANGE           | :TQ10000  | 72967 |   926K|       |   116   (1)| 00:00:01 |  Q1,00 | P->P | RANGE      |
|   6 |       VIEW                   |           | 72967 |   926K|       |   116   (1)| 00:00:01 |  Q1,00 | PCWP |            |
|   7 |        PX BLOCK ITERATOR     |           | 72967 |  2493K|       |   116   (1)| 00:00:01 |  Q1,00 | PCWC |            |
|*  8 |         TABLE ACCESS FULL    | TEMP_TEST | 72967 |  2493K|       |   116   (1)| 00:00:01 |  Q1,00 | PCWP |            |
-------------------------------------------------------------------------------------------------------------------------------

Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------

   1 - SEL$1
   6 - SEL$2 / LST@SEL$1
   8 - SEL$2 / TT@SEL$2

Outline Data
-------------

  /*+
      BEGIN_OUTLINE_DATA
      IGNORE_OPTIM_EMBEDDED_HINTS
      OPTIMIZER_FEATURES_ENABLE('18.1.0')
      DB_VERSION('18.1.0')
      ALL_ROWS
      OUTLINE_LEAF(@"SEL$2")
      OUTLINE_LEAF(@"SEL$1")
      NO_ACCESS(@"SEL$1" "LST"@"SEL$1")
      FULL(@"SEL$2" "TT"@"SEL$2")
      END_OUTLINE_DATA
  */

Predicate Information (identified by operation id):
---------------------------------------------------

   8 - access(:Z>=:Z AND :Z<=:Z)

Column Projection Information (identified by operation id):
-----------------------------------------------------------

   1 - "LST"."VAL"[NUMBER,22]
   2 - (#keys=0) "LST"."VAL"[NUMBER,22]
   3 - (#keys=1) "LST"."VAL"[NUMBER,22]
   4 - "LST"."VAL"[NUMBER,22]
   5 - (#keys=1) "LST"."VAL"[NUMBER,22]
   6 - "LST"."VAL"[NUMBER,22]
   7 - "TT"."COL1"[VARCHAR2,128]
   8 - "TT"."COL1"[VARCHAR2,128]

...
Рейтинг: 0 / 0
Не могу завести никак PARALLEL в запросе с функцией
    #39894785
Фотография кит северных морей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТС,

оберните вызов utl_match в свою функцию с parallel_enable. ну и читайте про неё же.
...
Рейтинг: 0 / 0
Не могу завести никак PARALLEL в запросе с функцией
    #39895119
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtender
Код: plsql
1.
|   1 |  PX COORDINATOR FORCED SERIAL|           |       |       |       |            |          |        |      |            |

...
Рейтинг: 0 / 0
Не могу завести никак PARALLEL в запросе с функцией
    #39895197
Valergrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pipelined функция не поможет здесь? Ее точно можно распараллелизовать.
...
Рейтинг: 0 / 0
Не могу завести никак PARALLEL в запросе с функцией
    #39895258
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
andrey_anonymous,

Я как бы видел, я показал почему параллель вообще не включалась... Про включение параллели для функции раньше меня уже отписались.
...
Рейтинг: 0 / 0
Не могу завести никак PARALLEL в запросе с функцией
    #39895492
Zalm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кит северных морей
ТС,

оберните вызов utl_match в свою функцию с parallel_enable. ну и читайте про неё же.

Спасибо тебе восхитительный человек)))
parallel_enable у функции сильно помогает даже без parallel в самом select!

Благодарю Всех кто участвовал в обсуждении!
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Не могу завести никак PARALLEL в запросе с функцией
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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