powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Анализ плана выполнения
10 сообщений из 10, страница 1 из 1
Анализ плана выполнения
    #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
Анализ плана выполнения
    #39730948
Dr. Oracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rinace,

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

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

Спасибо.
...
Рейтинг: 0 / 0
Анализ плана выполнения
    #39730971
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rinaceимеет ли данный фрагмент потенциал для улучшения ?Ты с жиру не бесишься, чудак? Тебе хочется FTS?
...
Рейтинг: 0 / 0
Анализ плана выполнения
    #39730973
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что тут непонятного
Ошибка на шаге 21, OR всегда хреново прогнозировался оптимизатором
Как минимум, собрать глистограмму на MSI.ORGANIZATION_ID
...
Рейтинг: 0 / 0
Анализ плана выполнения
    #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
Анализ плана выполнения
    #39731089
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicТы с жиру не бесишься, чудак? Тебе хочется FTS?

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

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


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

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


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

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

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

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

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

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


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