Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Не могу завести никак PARALLEL в запросе с функцией / 18 сообщений из 18, страница 1 из 1
25.11.2019, 23:18
    #39894202
Zalm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу завести никак PARALLEL в запросе с функцией
Привет всем!
Никак не могу понять почему 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
26.11.2019, 05:48
    #39894238
проходил мимо...
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу завести никак PARALLEL в запросе с функцией
Zalm,

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

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


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


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

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

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


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

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


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

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

DETERMINISTIC-clause

В таблицу добавить поле и результат расчета триггером писать в добавленное поле, индекс опционально, если результат расчета нужен исключительно для сортировки, то можно обойтись FBI.
...
Рейтинг: 0 / 0
26.11.2019, 23:56
    #39894783
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу завести никак PARALLEL в запросе с функцией
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
27.11.2019, 00:03
    #39894785
кит северных морей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу завести никак PARALLEL в запросе с функцией
ТС,

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

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

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

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

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

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


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