powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помощь с расшифровкой TKPROF
18 сообщений из 18, страница 1 из 1
Помощь с расшифровкой TKPROF
    #39739424
esir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет, господа,

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

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

Код: 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
Помощь с расшифровкой TKPROF
    #39739427
run09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
esir,

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

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

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


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

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

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

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

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


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

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

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

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

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

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

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

не с того начинаете... Во-первых, если уж трейсите, то трейс надо было выкладывать сырой, а не огрызок ткпрофный, вместо куска экслейна - реального план со статистиками, во-вторых, раз уж в запросе куча PL/SQL-ных функций, то и их тоже надо показать, в-третьих, очевидно, что этот запрос надо внимательно проанализировать и упростить, т.к. даже без текста запроса видно кучу похожих семиджойнов, WINDOW SORT/BUFFER и сортировок на разных уровнях, а без текста запроса никто вам ничего не подскажет...
Догадки, конечно, строить можно, учитывая, что ясно видно, что практически все время провисело на CPU, но если хотите точных ответов, то и предоставляйте всю необходимую информацию.
Если хотите мучаться пробуя различные догадки, то для затравки:
постараться уменьшить:
1. кол-во вызовов PL/SQL функций
2. кол-во вызовов аналитики или хотя бы постараться "схлопнуть" ее на один уровень.
...
Рейтинг: 0 / 0
Помощь с расшифровкой TKPROF
    #39739622
esir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
18 сообщений из 18, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помощь с расшифровкой TKPROF
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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