Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Анализ плана выполнения / 10 сообщений из 10, страница 1 из 1
09.11.2018, 16:38
    #39730756
rinace
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ плана выполнения
Коллеги,
Имеется фрагмент плана выполнения :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                                  | Name                   | Starts | E-Rows |E-Bytes| Cost (%CPU)| A-Rows |
------------------------------------------------------------------------------------------------------------------------------
...
|  17 |               NESTED LOOPS                 |                        |      1 |   7650 |   261K|  1801   (1)|  66415 |
|  18 |                INLIST ITERATOR             |                        |      1 |        |       |            |      7 |
|  19 |                 TABLE ACCESS BY INDEX ROWID| MTL_PARAMETERS         |      7 |      7 |    56 |     3   (0)|      7 |
|* 20 |                  INDEX UNIQUE SCAN         | MTL_PARAMETERS_U1      |      7 |      7 |       |     1   (0)|      7 |
|* 21 |                INDEX RANGE SCAN            | MTL_SYSTEM_ITEMS_B_N13 |      7 |   1093 |       |    12   (0)|  66415 |
|  22 |               TABLE ACCESS BY INDEX ROWID  | MTL_SYSTEM_ITEMS_B     |  66415 |   1093 | 29511 |   257   (1)|  66415 |         
...

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

  20 - access(("MP"."ORGANIZATION_ID"=142 OR "MP"."ORGANIZATION_ID"=143 OR "MP"."ORGANIZATION_ID"=162 OR "MP"."ORGANIZATION_ID"=163 OR "MP"."ORGANIZATION_ID"=166 OR "MP"."ORGANIZATION_ID"=170 OR
              "MP"."ORGANIZATION_ID"=324))
  21 - access("MP"."ORGANIZATION_ID"="MSI"."ORGANIZATION_ID")
       filter(("MSI"."ORGANIZATION_ID"=142 OR "MSI"."ORGANIZATION_ID"=143 OR "MSI"."ORGANIZATION_ID"=162 OR "MSI"."ORGANIZATION_ID"=163 OR "MSI"."ORGANIZATION_ID"=166 OR
              "MSI"."ORGANIZATION_ID"=170 OR "MSI"."ORGANIZATION_ID"=324))


Вопрос - имеет ли данный фрагмент потенциал для улучшения ?
В частности лично мне очень не нравиться что оптимизатор так ошибся с количеством строк на шаге 22.

Какая еще дополнительная информация для анализа может потребоваться кроме планов выполнения получаемых командой : SELECT * FROM TABLE(DBMS_XPLAN.display_cursor(format=>'ALLSTATS LAST +cost +bytes'));
...
Рейтинг: 0 / 0
10.11.2018, 00:34
    #39730948
Dr. Oracle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ плана выполнения
rinace,

Насколько актуальна статистика на объекты, к которым идет обращение в запросе? Такая разница между ожидаемым количеством данных и фактическим обычно свидетельствует об устаревшей статистике. Из-за этого оптимизатор может выбрать не самый оптимальных план, то есть доступ к данным, которые Вам нужны.

Есть ли в вашем расоряжении возможность использовать диагностик+тюнинг пакет оракловый?

Спасибо.
...
Рейтинг: 0 / 0
10.11.2018, 08:40
    #39730971
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ плана выполнения
rinaceимеет ли данный фрагмент потенциал для улучшения ?Ты с жиру не бесишься, чудак? Тебе хочется FTS?
...
Рейтинг: 0 / 0
10.11.2018, 08:45
    #39730973
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ плана выполнения
А что тут непонятного
Ошибка на шаге 21, OR всегда хреново прогнозировался оптимизатором
Как минимум, собрать глистограмму на MSI.ORGANIZATION_ID
...
Рейтинг: 0 / 0
10.11.2018, 15:53
    #39731074
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ плана выполнения
rinace,

покажи результат:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
select *
from (
    select
        g.*,
        sum(cnt)over() ssum,
        min(cnt)over() smin,
        max(cnt)over() smax,
        median(cnt)over() smedian,
        avg(cnt)over() savg
    from (
        select
          ORGANIZATION_ID,
          count(*) cnt
        from MTL_SYSTEM_ITEMS_B
        group by ORGANIZATION_ID
        ) g
    order by cnt desc
    )
where rownum<20
...
Рейтинг: 0 / 0
10.11.2018, 17:15
    #39731089
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ плана выполнения
ElicТы с жиру не бесишься, чудак? Тебе хочется FTS?

А вдруг он на Exadata?

SY.
...
Рейтинг: 0 / 0
10.11.2018, 17:24
    #39731091
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ плана выполнения
rinaceВопрос - имеет ли данный фрагмент потенциал для улучшения ?


Без знания деталей базы, приложения, версии, железа (exadata), etc. - гадание. Исходя из плана - избавиться от TABLE ACCESS BY INDEX ROWID созданием индексoв включающих все нужные поля.

SY.
...
Рейтинг: 0 / 0
12.11.2018, 09:48
    #39731551
rinace
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ плана выполнения
SYrinaceВопрос - имеет ли данный фрагмент потенциал для улучшения ?


Без знания деталей базы, приложения, версии, железа (exadata), etc. - гадание. Исходя из плана - избавиться от TABLE ACCESS BY INDEX ROWID созданием индексoв включающих все нужные поля.

SY.
Спасибо за подтверждение .
Именно к этой мысли и прихожу.
...
Рейтинг: 0 / 0
12.11.2018, 09:51
    #39731552
rinace
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ плана выполнения
Dr. Oraclerinace,

Насколько актуальна статистика на объекты, к которым идет обращение в запросе? Такая разница между ожидаемым количеством данных и фактическим обычно свидетельствует об устаревшей статистике. Из-за этого оптимизатор может выбрать не самый оптимальных план, то есть доступ к данным, которые Вам нужны.

Есть ли в вашем расоряжении возможность использовать диагностик+тюнинг пакет оракловый?

Спасибо.
Да, такая проблема есть, вернее была.
Как бы это не было странным но джоб сбора статистики бы выключен.
Ситуация исправлена, сбор статистики включен.
Прошло достаточно времени, сегодня посмотрю новый план.

Да тюниг-пак можно использовать, лицензия закуплена .
...
Рейтинг: 0 / 0
12.11.2018, 10:01
    #39731559
rinace
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ плана выполнения
xtender
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
select *
from (
    select
        g.*,
        sum(cnt)over() ssum,
        min(cnt)over() smin,
        max(cnt)over() smax,
        median(cnt)over() smedian,
        avg(cnt)over() savg
    from (
        select
          ORGANIZATION_ID,
          count(*) cnt
        from MTL_SYSTEM_ITEMS_B
        group by ORGANIZATION_ID
        ) g
    order by cnt desc
    )
where rownum<20


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
ORGANIZATION_ID        CNT       SSUM       SMIN       SMAX    SMEDIAN       SAVG
--------------- ---------- ---------- ---------- ---------- ---------- ----------
            141      49435     160189          1      49435        272     4215.5
            142      27362     160189          1      49435        272     4215.5
            161      15012     160189          1      49435        272     4215.5
            162      13546     160189          1      49435        272     4215.5
            163      12817     160189          1      49435        272     4215.5
            201      11494     160189          1      49435        272     4215.5
            143       6113     160189          1      49435        272     4215.5
            164       5340     160189          1      49435        272     4215.5
            166       3566     160189          1      49435        272     4215.5
            165       3417     160189          1      49435        272     4215.5
            170       2817     160189          1      49435        272     4215.5
            224       2309     160189          1      49435        272     4215.5
            288       1539     160189          1      49435        272     4215.5
            286       1511     160189          1      49435        272     4215.5
            202        942     160189          1      49435        272     4215.5
            167        773     160189          1      49435        272     4215.5
            285        716     160189          1      49435        272     4215.5
            225        355     160189          1      49435        272     4215.5
            284        320     160189          1      49435        272     4215.5

19 rows selected.

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


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