Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / FETCH BULK COLLECT INTO LIMIT долго выполняется / 21 сообщений из 21, страница 1 из 1
21.02.2018, 17:39
    #39605678
Olegush
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FETCH BULK COLLECT INTO LIMIT долго выполняется
Здравствуйте, помогите пожалуйста. Eсть курсор здоровый, есть в нём юнионы и дблинки. OPEN cursor выполняется за секунду а FETCH за два часа. Притом каждый день время растёт на 2 минуты хотя количество записей приблизительно равно каждый день. Выполнение самого скрипта в TOAD длится несколько секунд. Что может быть не так с FETCH? Oracle 11g. Спасибо.
...
Рейтинг: 0 / 0
21.02.2018, 17:51
    #39605690
Fetch-ch-ch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FETCH BULK COLLECT INTO LIMIT долго выполняется
купить билет на поезд и занять место в вагоне занимает 30 минут, а до места он едет двое суток - что не так с поездом?!
...
Рейтинг: 0 / 0
21.02.2018, 18:02
    #39605695
Olegush
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FETCH BULK COLLECT INTO LIMIT долго выполняется
Fetch-ch-ch,
Если поезд едет 50 километров за две сутки то это уже не поезд а телега.
...
Рейтинг: 0 / 0
21.02.2018, 18:14
    #39605703
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FETCH BULK COLLECT INTO LIMIT долго выполняется
Olegush,

Покажи вывод для проблемного курсора
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select executions,
       rows_processed,
       fetches,
       elapsed_time,
       cpu_time,
       plsql_exec_time,
       user_io_wait_time,
       concurrency_wait_time,
       application_wait_time
  from v$sql
 where sql_id = 'your sql_id'
...
Рейтинг: 0 / 0
21.02.2018, 18:28
    #39605715
Olegush
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FETCH BULK COLLECT INTO LIMIT долго выполняется
dbms_photoshop,

image
...
Рейтинг: 0 / 0
21.02.2018, 18:50
    #39605720
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FETCH BULK COLLECT INTO LIMIT долго выполняется
Olegush,

Насколько я понял по заголовку речь идет про fetch из курсора в коллекцию в PL/SQL.
В твоем случае ни одной строки не фетчится и время выполнение порядка 15-16 секунд.

Если посмотреть статистику для кода типа такого
Код: 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.
declare
   n       numbers;
   c       sys_refcursor;
   limit   int := 1e5;
begin

   open c for
      select --+ querty
            rownum
        from dual
      connect by rownum <= 1e6;

   loop

      fetch c
        bulk collect into n
      limit limit;

      exit when n.count < limit;
      
   end loop;

end;
/

Число фетч будет равно числу итераций + 1, а rows_processed - числу выбранных строк из курсора.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
set pages 150 lines 150
select executions,
       rows_processed,
       fetches,
       elapsed_time,
       cpu_time,
       plsql_exec_time,
       user_io_wait_time,
       concurrency_wait_time,
       application_wait_time
  from v$sql
 where sql_id = '26j00tx9fzd8d';


Код: plsql
1.
2.
3.
4.
EXECUTIONS ROWS_PROCESSED    FETCHES ELAPSED_TIME   CPU_TIME PLSQL_EXEC_TIME USER_IO_WAIT_TIME CONCURRENCY_WAIT_TIME APPLICATION_WAIT_TIME
---------- -------------- ---------- ------------ ---------- --------------- ----------------- --------------------- ---------------------
         1        1000000         11       823582     819875               0                 0                     0                     0
1 row selected.



Возникают сомнения тот ли SQL_ID ты выбрал.
Хотя может дело в dblink, смотри что происходит и на удаленной базе.
...
Рейтинг: 0 / 0
21.02.2018, 19:24
    #39605733
Olegush
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FETCH BULK COLLECT INTO LIMIT долго выполняется
dbms_photoshop,

Я понял, спасибо. Я поменяю немножко процедуру и посмотим что она завтра даст. Ваши скрипты очень полезные. Спасибо.
...
Рейтинг: 0 / 0
22.02.2018, 17:21
    #39606266
Olegush
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FETCH BULK COLLECT INTO LIMIT долго выполняется
dbms_photoshop,

Добрый день, вот что я сегодня получил:
...
Рейтинг: 0 / 0
22.02.2018, 17:31
    #39606275
Fetch-ch-ch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FETCH BULK COLLECT INTO LIMIT долго выполняется
OlegushFetch-ch-ch,
Если поезд едет 50 километров за две сутки то это уже не поезд а телега.

OlegushEсть курсор здоровый, есть в нём юнионы и дблинки.

Дык отож :) :) :)
Не, сделать так, чтобы exec курсора (сесть в поезд) занимал столько же времени, как и полный фетч (доехать), конечно, можно. Только не в сторону "несколько секунд", а в сторону "два часа. Притом каждый день время растёт на 2 минуты".
Достаточно материализовать результат.

Если же хочется чтобы все работало like a charm - то надо качественно поработать над "курсор здоровый, есть в нём юнионы и дблинки"
...
Рейтинг: 0 / 0
22.02.2018, 17:32
    #39606276
Olegush
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FETCH BULK COLLECT INTO LIMIT долго выполняется
Я не знаю сколько записей было вчера (точно до тысячи) но время было ровно на 120 секунд меньше.
...
Рейтинг: 0 / 0
22.02.2018, 18:02
    #39606300
Olegush
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FETCH BULK COLLECT INTO LIMIT долго выполняется
Fetch-ch-chЕсли же хочется чтобы все работало like a charm - то надо качественно поработать над "курсор здоровый, есть в нём юнионы и дблинки"

результат выполнения скрипта с /*+ GATHER_PLAN_STATISTICS */ админом вне процедуры:

Код: 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.
56.
57.
58.
59.
-----------------------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                                | Name                      | Starts | E-Rows | A-Rows |   A-Time   | Buffers |  OMem |  1Mem | Used-Mem |
-----------------------------------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                         |                           |      1 |        |      0 |00:00:00.01 |       0 |       |       |          |
|   1 |  HASH UNIQUE                             |                           |      1 |    269K|      0 |00:00:00.01 |       0 |    24M|  4367K|          |
|   2 |   VIEW                                   |                           |      1 |    269K|     55 |00:00:00.01 |      61 |       |       |          |
|   3 |    UNION-ALL                             |                           |      1 |        |     55 |00:00:00.01 |      61 |       |       |          |
|*  4 |     FILTER                               |                           |      1 |        |     55 |00:00:00.01 |      61 |       |       |          |
|*  5 |      TABLE ACCESS FULL                   | XXX_XXXXXXXX_XXXX_XXXXXXX |      1 |      2 |     55 |00:00:00.01 |      61 |       |       |          |
|   6 |      SORT AGGREGATE                      |                           |     11 |      1 |     11 |00:00:01.06 |       0 |       |       |          |
|*  7 |       VIEW                               |                           |     11 |      1 |      0 |00:00:01.06 |       0 |       |       |          |
|*  8 |        WINDOW SORT PUSHED RANK           |                           |     11 |      1 |      5 |00:00:01.06 |       0 |  2048 |  2048 | 2048  (0)|
|   9 |         WINDOW SORT                      |                           |     11 |      1 |     12 |00:00:01.06 |       0 |  4096 |  4096 | 4096  (0)|
|  10 |          NESTED LOOPS                    |                           |     11 |      1 |     12 |00:00:01.06 |       0 |       |       |          |
|  11 |           VIEW                           | XX_XXX_X                  |     11 |      1 |      1 |00:00:00.94 |       0 |       |       |          |
|  12 |            SORT UNIQUE                   |                           |     11 |      1 |      1 |00:00:00.94 |       0 |  2048 |  2048 | 2048  (0)|
|  13 |             REMOTE                       | XXX_XX                    |     11 |      1 |      1 |00:00:00.94 |       0 |       |       |          |
|  14 |           REMOTE                         | XXX_XX                    |      1 |      1 |     12 |00:00:00.12 |       0 |       |       |          |
|  15 |     REMOTE                               | XXX_XX                    |      1 |    126K|      0 |00:00:00.13 |       0 |       |       |          |
|  16 |     REMOTE                               | XXX_XXXXXXXX              |      1 |    142K|      0 |00:00:00.11 |       0 |       |       |          |
|* 17 |     FILTER                               |                           |      1 |        |      0 |00:00:01.38 |       0 |       |       |          |
|* 18 |      HASH JOIN OUTER                     |                           |      1 |      1 |    690 |00:00:01.39 |       0 |   947K|   947K| 1231K (0)|
|  19 |       VIEW                               |                           |      1 |    997 |    690 |00:00:00.42 |       0 |       |       |          |
|  20 |        REMOTE                            |                           |      1 |        |    690 |00:00:00.42 |       0 |       |       |          |
|  21 |       REMOTE                             | XXX_XXXXXXXX              |      1 |    571K|    574K|00:00:00.25 |       0 |       |       |          |
|* 22 |     FILTER                               |                           |      1 |        |      0 |00:00:00.01 |       0 |       |       |          |
|  23 |      NESTED LOOPS OUTER                  |                           |      1 |      1 |    140 |00:00:12.58 |    3245 |       |       |          |
|* 24 |       HASH JOIN                          |                           |      1 |      2 |    141 |00:00:02.08 |    3245 |  1180K|  1180K| 1226K (0)|
|  25 |        VIEW                              | XX_XXX_X                  |      1 |      1 |    317 |00:00:00.01 |     826 |       |       |          |
|  26 |         HASH UNIQUE                      |                           |      1 |      1 |    317 |00:00:00.01 |     826 |  1207K|  1207K| 1327K (0)|
|  27 |          NESTED LOOPS                    |                           |      1 |        |    317 |00:00:00.01 |     826 |       |       |          |
|  28 |           NESTED LOOPS                   |                           |      1 |      1 |    405 |00:00:00.01 |     596 |       |       |          |
|* 29 |            TABLE ACCESS BY INDEX ROWID   | X_XXX_XXX                 |      1 |     22 |    405 |00:00:00.01 |     228 |       |       |          |
|* 30 |             INDEX SKIP SCAN              | X_XXX_XXX_XXX_XXXXXX_X    |      1 |    443 |    440 |00:00:00.01 |      35 |       |       |          |
|* 31 |            INDEX UNIQUE SCAN             | X_XXXX_XXX_XX             |    405 |      1 |    405 |00:00:00.01 |     368 |       |       |          |
|* 32 |           TABLE ACCESS BY INDEX ROWID    | X_XXXX_XXX                |    405 |      1 |    317 |00:00:00.01 |     230 |       |       |          |
|  33 |        VIEW                              |                           |      1 |   5016 |   5179 |00:00:01.63 |    2419 |       |       |          |
|* 34 |         HASH JOIN OUTER                  |                           |      1 |   5016 |   5179 |00:00:01.63 |    2419 |  1000K|  1000K| 1511K (0)|
|  35 |          VIEW                            |                           |      1 |   3616 |   5786 |00:00:00.41 |    2419 |       |       |          |
|  36 |           CONCATENATION                  |                           |      1 |        |   5786 |00:00:00.41 |    2419 |       |       |          |
|* 37 |            HASH JOIN OUTER               |                           |      1 |   1410 |   3384 |00:00:00.39 |    1390 |   771K|   771K| 1239K (0)|
|  38 |             MERGE JOIN                   |                           |      1 |   1009 |    999 |00:00:00.01 |    1390 |       |       |          |
|* 39 |              TABLE ACCESS BY INDEX ROWID | X_XXX                     |      1 |   1476 |   1474 |00:00:00.01 |     406 |       |       |          |
|  40 |               INDEX FULL SCAN            | X_XXX_XX                  |      1 |   1477 |   1475 |00:00:00.01 |       6 |       |       |          |
|* 41 |              SORT JOIN                   |                           |   1474 |   1009 |    999 |00:00:00.01 |     984 |   115K|   115K|  102K (0)|
|  42 |               TABLE ACCESS BY INDEX ROWID| X_XXXX                    |      1 |   1009 |   1001 |00:00:00.01 |     984 |       |       |          |
|* 43 |                INDEX RANGE SCAN          | XXX_XXXXXXXXXX_X          |      1 |   1009 |   1001 |00:00:00.01 |      18 |       |       |          |
|  44 |             REMOTE                       | XXX_XXXX                  |      1 |    585K|    593K|00:00:00.28 |       0 |       |       |          |
|* 45 |            HASH JOIN OUTER               |                           |      1 |   2206 |   2402 |00:00:00.17 |    1029 |   776K|   776K| 1231K (0)|
|  46 |             MERGE JOIN                   |                           |      1 |   1578 |    655 |00:00:00.01 |    1029 |       |       |          |
|* 47 |              TABLE ACCESS BY INDEX ROWID | X_XXX                     |      1 |   1476 |   1474 |00:00:00.01 |     406 |       |       |          |
|  48 |               INDEX FULL SCAN            | X_XXX_XX                  |      1 |   1477 |   1475 |00:00:00.01 |       6 |       |       |          |
|* 49 |              SORT JOIN                   |                           |   1474 |   1579 |    655 |00:00:00.01 |     623 | 80896 | 80896 |71680  (0)|
|  50 |               TABLE ACCESS BY INDEX ROWID| X_XXXX                    |      1 |   1579 |    655 |00:00:00.01 |     623 |       |       |          |
|* 51 |                INDEX RANGE SCAN          | XXX_XXXXXXXXXX_X          |      1 |   1579 |    655 |00:00:00.01 |      20 |       |       |          |
|  52 |             REMOTE                       | XXX_XXXX                  |      1 |    585K|    593K|00:00:00.11 |       0 |       |       |          |
|  53 |          REMOTE                          | XXX_XXXXXXXX              |      1 |    546K|    410K|00:00:00.09 |       0 |       |       |          |
|  54 |       REMOTE                             | XXX_XXXXXXXX              |    141 |    570K|    140 |00:00:10.59 |       0 |       |       |          |
-----------------------------------------------------------------------------------------------------------------------------------------------------------



где нужно нажать чтоб работал like a charm?

MATERIALIZED VIEW действительно поможет?
...
Рейтинг: 0 / 0
22.02.2018, 18:34
    #39606319
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FETCH BULK COLLECT INTO LIMIT долго выполняется
Olegushгде нужно нажать чтоб работал like a charm?Замени на
Код: plsql
1.
select ... from dual where 1 = 0

Что твой что этот запрос ничего не возвращает.
OlegushMATERIALIZED VIEW действительно поможет?Тебе же A-Time ясно показывает куда уходит время.
...
Рейтинг: 0 / 0
22.02.2018, 18:52
    #39606325
Olegush
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FETCH BULK COLLECT INTO LIMIT долго выполняется
dbms_photoshopЧто твой что этот запрос ничего не возвращает.

разве 165 rows_processed это ничего?
...
Рейтинг: 0 / 0
22.02.2018, 18:54
    #39606328
Olegush
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FETCH BULK COLLECT INTO LIMIT долго выполняется
dbms_photoshopТебе же A-Time ясно показывает куда уходит время.

показывает секунды а у меня уходят часы.
...
Рейтинг: 0 / 0
22.02.2018, 19:00
    #39606332
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FETCH BULK COLLECT INTO LIMIT долго выполняется
Olegushdbms_photoshopЧто твой что этот запрос ничего не возвращает.

разве 165 rows_processed это ничего?A-Rows = 0 для SELECT STATEMENT.
Не очень совпадает со статистикой из v$sql.
Olegushdbms_photoshopТебе же A-Time ясно показывает куда уходит время.

показывает секунды а у меня уходят часы.По всей видимости из-за NL дергается линк в цикле и время на удаленной базе не попадает в A-Time.
Соответственно имеет смысл уходить от NL.
...
Рейтинг: 0 / 0
22.02.2018, 23:19
    #39606410
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FETCH BULK COLLECT INTO LIMIT долго выполняется
dbms_photoshopПо всей видимости
По всей видимости админ дернул отчет секунд через 12-15 после запуска запроса, ибо нефиг :)
А ТС можно порекомендовать три вещи:
1. загуглить DRIVING_SITE
2. переработать запрос, хотя бы убрать distinct (ну не нравится он мне), а лучше - рассмотреть варианты DI.
3. убедиться, что в апреле линки не полетят согласно обсуждаемой сегодня нотке.
...
Рейтинг: 0 / 0
23.02.2018, 09:54
    #39606462
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FETCH BULK COLLECT INTO LIMIT долго выполняется
andrey_anonymous,

ху из DI?

.....
stax
...
Рейтинг: 0 / 0
23.02.2018, 13:16
    #39606515
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FETCH BULK COLLECT INTO LIMIT долго выполняется
andrey_anonymousПо всей видимости админ дернул отчет секунд через 12-15 после запуска запроса, ибо нефиг :)У каждого своя видимость, но я думаю админ взял запрос из кода и просто подставил не те бинды или вообще не подставил. :)
...
Рейтинг: 0 / 0
23.02.2018, 16:33
    #39606573
Olegush
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FETCH BULK COLLECT INTO LIMIT долго выполняется
dbms_photoshopУ каждого своя видимость, но я думаю админ взял запрос из кода и просто подставил не те бинды или вообще не подставил. :)
100%

andrey_anonymous 1. загуглить DRIVING_SITE
прямо в яблочко
...
Рейтинг: 0 / 0
24.02.2018, 01:31
    #39606658
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FETCH BULK COLLECT INTO LIMIT долго выполняется
Staxху из DI?
Продукты класса Data Integration - от ODI, информатик, сасов и иже с ними по самые коммьюнити-эдишн типа той же пентахи кеттл (на сегодня хитачи вроде)
...
Рейтинг: 0 / 0
26.02.2018, 09:59
    #39607156
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FETCH BULK COLLECT INTO LIMIT долго выполняется
andrey_anonymousStaxху из DI?
Продукты класса Data Integration - от ODI, информатик, сасов и иже с ними по самые коммьюнити-эдишн типа той же пентахи кеттл (на сегодня хитачи вроде)

спасибо

зы
не уверен что все понял

.....
stax
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / FETCH BULK COLLECT INTO LIMIT долго выполняется / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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