Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помощь с расшифровкой TKPROF / 18 сообщений из 18, страница 1 из 1
27.11.2018, 22:11
    #39739424
esir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь с расшифровкой TKPROF
Привет, господа,

Попросили помочь с оптимизацией запроса, но я не силен в оптимизации оракловых запросов.

Прогнал трассировку для сессии:

Код: plsql
1.
2.
3.
4.
begin 
dbms_system.set_ev(862, 7833, 10046, 8, ''); 
end; 
/



преобразовал через TKPROF :

Код: powershell
1.
tkprof work_ora_320.trc output=320.txt sort=(prsela,exeela,fchela)



На выходе файл с 23 запросами и самый тяжкий из них - тот который необходимо проанализировать:

Код: powershell
1.
2.
3.
4.
5.
6.
7.
call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse       28      0.01       0.01          0          0          0           0
Execute     28      0.00       0.01          0          0          0           0
Fetch       28    376.75     378.90        207    5349593        224         346
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total       84    376.77     378.92        207    5349593        224         346




и вот такой тотал:

Код: powershell
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.
OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTS

call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse      196      0.01       0.02          0          0          0           0
Execute    196      0.03       0.03          0          0          0           0
Fetch      197    437.61     442.69       3480    6280167        260         474
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total      589    437.66     442.75       3480    6280167        260         474

Misses in library cache during parse: 0

Elapsed times include waiting on following events:
  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  db file sequential read                      3482        0.37          3.14
  SQL*Net message to client                     981        0.00          0.00
  SQL*Net more data to client                    62        0.00          0.00
  SQL*Net message from client                   981        0.20          6.78
  SQL*Net more data from client                1792        0.00          0.06
  direct path write temp                         28        0.00          0.00
  latch: row cache objects                        5        0.00          0.00
  latch: cache buffers chains                    12        0.00          0.00


OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS

call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        0      0.00       0.00          0          0          0           0
Execute 321307      9.39       8.90          0          0          0           0
Fetch   321307      6.86       7.09         86    1015917          0      321307
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total   642614     16.25      16.00         86    1015917          0      321307

Misses in library cache during parse: 0

Elapsed times include waiting on following events:
  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  db file sequential read                        86        0.00          0.02
  cursor: pin S                                  13        0.00          0.00

   23  user  SQL statements in session.
    0  internal SQL statements in session.
   23  SQL statements in session.





Насколько я понимаю так много PARSE для одно и того же запроса - это не гуд, но CPU и ELAPSED время минимально, и как правильно ли понял, что PARSE тут не такую и большую роль играет?

С оптимизацией знаком крайне поверхностно, от слова совсем, буду благодарен за указания в какую сторону копать.
...
Рейтинг: 0 / 0
27.11.2018, 22:19
    #39739427
run09
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь с расшифровкой TKPROF
esir,

> Насколько я понимаю так много PARSE для одно и того же запроса - это не гуд

почитайте чем отличаются soft parse , от hard parse.
...
Рейтинг: 0 / 0
27.11.2018, 22:27
    #39739430
Melkomyagkii_newbi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь с расшифровкой TKPROF
esir,

Запрос выполняется в среднем за 13 секунд. Смотрите его план, раз уж вызвались.
...
Рейтинг: 0 / 0
27.11.2018, 22:40
    #39739437
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь с расшифровкой TKPROF
esirбуду благодарен за указания в какую сторону копать.Копать нужно в сторону улучшения плохих чисел.
esirПопросили помочь с оптимизацией запроса, но я не силен в оптимизации оракловых запросов.
С оптимизацией знаком крайне поверхностно, от слова совсемТ.е. тот, кто просил хуже тебя только тем, что не умеет писать на форумы?


http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM
...
Рейтинг: 0 / 0
27.11.2018, 22:47
    #39739439
esir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь с расшифровкой TKPROF
Melkomyagkii_newbiesir,

Запрос выполняется в среднем за 13 секунд. Смотрите его план, раз уж вызвались.

Вызвались - громкое слово.
С моими опытом, такой план - пока только икоту вызывает, сказать, что я там много понял - нагло соврать.
Да что уж там, вот он:
...
Рейтинг: 0 / 0
27.11.2018, 22:48
    #39739441
esir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь с расшифровкой TKPROF
run09,

Спасибо, завтра проштудирую
...
Рейтинг: 0 / 0
27.11.2018, 22:53
    #39739445
Melkomyagkii_newbi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь с расшифровкой TKPROF
esir,

вам в форум работа. по крайней мере мне раньше платили за тюнинг подобных запросов.
...
Рейтинг: 0 / 0
27.11.2018, 22:53
    #39739446
esir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь с расшифровкой TKPROF
esirПопросили помочь с оптимизацией запроса, но я не силен в оптимизации оракловых запросов.
С оптимизацией знаком крайне поверхностно, от слова совсемТ.е. тот, кто просил хуже тебя только тем, что не умеет писать на форумы?


http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM [/quot]

Там как я понял, совсем патовая ситуация и они вроде и знают больше, но решения найти не могут.
...
Рейтинг: 0 / 0
27.11.2018, 22:58
    #39739449
esir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь с расшифровкой TKPROF
Melkomyagkii_newbiesir,

вам в форум работа.

Не совсем понял
...
Рейтинг: 0 / 0
27.11.2018, 22:58
    #39739450
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь с расшифровкой TKPROF
esirсовсем патовая ситуация и они вроде и знают больше, но решения найти не могут.С таким-то планом 13 сек - это "летает"
...
Рейтинг: 0 / 0
27.11.2018, 23:00
    #39739451
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь с расшифровкой TKPROF
esirMelkomyagkii_newbiвам в форум работа.Не совсем понялВ таком страшном "дерьме" захотеть что-то понять можно только за деньги.
...
Рейтинг: 0 / 0
27.11.2018, 23:05
    #39739453
esir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь с расшифровкой TKPROF
Elicesirпропущено...
Не совсем понялВ таком страшном "дерьме" захотеть что-то понять можно только за деньги.

а вот тут нельзя не согласиться!
...
Рейтинг: 0 / 0
27.11.2018, 23:12
    #39739455
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь с расшифровкой TKPROF
Начните с простого: пересоберите статистику на таблицах и индексах.
Есть небольшой шанс, что cartesian и sort merge самоотменятся.
А вообще, не форумное это дело запросы такой сложности на общественных началах переписывать - ищите специалиста.
...
Рейтинг: 0 / 0
27.11.2018, 23:16
    #39739457
esir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь с расшифровкой TKPROF
andrey_anonymous,

да и мысли не было, на кого-то эту колбасу скидывать)
поделился чем богат, так сказать.

Вот про Parse уже подсказали почитать.
Вы вот про статистику сказали - но она ежедневно собирается, буду туда ещё копать может что и получиться.
...
Рейтинг: 0 / 0
27.11.2018, 23:35
    #39739465
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь с расшифровкой TKPROF
esirВот про Parse уже подсказали почитать.
Не в нем проблема, хоть parse/execute и плохой. Лечится тривиально - заменой литералов на bind - но погоды в данном конкретном случае не сделает. А для ленивых можно и режимом шаринга курсоров сыграть.
Сам запрос излишне сложен - оптимизатору без подсказок при парсинге за вменяемое время физичеки не перебрать все варианты. Сталбыть, могут пригодиться инструменты управления планом - тут сообразно с версией сервера, этот инструментарий менялся.
Если позволяет лицензия - испробуйте возможности автотюнинга.
Некоторые вещи можно решить мат. представлениями + query rewrite.
Когда дойдете до переписывания самого запроса:
Дистинкты и самосоединения из плана выпирают весьма выпукло даже без текста запроса, их по мере таланта и владения мат.частью следовало бы малость подсократить.
Кроме того, в некоторых случаях имеет смысл по возможности скорректировать модель данных, хотя обычно это выливается в сроки и трудозатраты.
...
Рейтинг: 0 / 0
27.11.2018, 23:51
    #39739471
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь с расшифровкой TKPROF
andrey_anonymousхоть parse/execute и плохойНе страшное соотношение. А для PL/SQL вообще нормальное. Боязнь этого соотношения - это скорее миф.
andrey_anonymousЛечится тривиально - заменой литералов на bindИ как же это поможет соотношению?
...
Рейтинг: 0 / 0
28.11.2018, 00:58
    #39739477
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь с расшифровкой TKPROF
esir,

не с того начинаете... Во-первых, если уж трейсите, то трейс надо было выкладывать сырой, а не огрызок ткпрофный, вместо куска экслейна - реального план со статистиками, во-вторых, раз уж в запросе куча PL/SQL-ных функций, то и их тоже надо показать, в-третьих, очевидно, что этот запрос надо внимательно проанализировать и упростить, т.к. даже без текста запроса видно кучу похожих семиджойнов, WINDOW SORT/BUFFER и сортировок на разных уровнях, а без текста запроса никто вам ничего не подскажет...
Догадки, конечно, строить можно, учитывая, что ясно видно, что практически все время провисело на CPU, но если хотите точных ответов, то и предоставляйте всю необходимую информацию.
Если хотите мучаться пробуя различные догадки, то для затравки:
постараться уменьшить:
1. кол-во вызовов PL/SQL функций
2. кол-во вызовов аналитики или хотя бы постараться "схлопнуть" ее на один уровень.
...
Рейтинг: 0 / 0
28.11.2018, 11:49
    #39739622
esir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь с расшифровкой TKPROF
xtenderesir,

не с того начинаете... Во-первых, если уж трейсите, то трейс надо было выкладывать сырой, а не огрызок ткпрофный, вместо куска экслейна - реального план со статистиками, во-вторых, раз уж в запросе куча PL/SQL-ных функций, то и их тоже надо показать, в-третьих, очевидно, что этот запрос надо внимательно проанализировать и упростить, т.к. даже без текста запроса видно кучу похожих семиджойнов, WINDOW SORT/BUFFER и сортировок на разных уровнях, а без текста запроса никто вам ничего не подскажет...
Догадки, конечно, строить можно, учитывая, что ясно видно, что практически все время провисело на CPU, но если хотите точных ответов, то и предоставляйте всю необходимую информацию.
Если хотите мучаться пробуя различные догадки, то для затравки:
постараться уменьшить:
1. кол-во вызовов PL/SQL функций
2. кол-во вызовов аналитики или хотя бы постараться "схлопнуть" ее на один уровень.


Спасибо за советы, передал разработчикам.
Если интересно посмотреть - в ссылку гугловская директория с заархивированным трейсом и *.sql файлом запроса.
http://bit.ly/2r8GsNS

xtenderвместо куска экслейна - реального план со статистиками
Не совсем понимаю, имеется ввиду вот таким образом собрать статистику?

Код: plsql
1.
2.
3.
4.
 /*+ gather_plan_statistics */

SELECT *
FROM table(DBMS_XPLAN.DISPLAY_CURSOR(FORMAT=>'ALLSTATS LAST ALL +OUTLINE'));
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помощь с расшифровкой TKPROF / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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