|
метрики сравнения производительности запросов
|
|||
---|---|---|---|
#18+
Всем привет. Задался вопросом о сборе макисмальной инфы о производительности запроса с целью сравнения разных вариантов исполения. Трасса само собой один из инструментов для такого анализа. Однако хотелось бы собрать инфу по разным служебным вьюхам. Может есть у кого полезный скриптец буду признателен. Что накопал: v$sql - дисковые и логические чтения, различные временные характиристики, аля elapsed, cpu, concurrency и io time, px_servers_executions v$sql_plan_statistics_all - план запроса с размером используемой памяти + немного инфы по выполнению соединения(optimal hj, onepass etc.) v$active_session_history - куда ж без нее. По sql_plan_line_id можно примерно понять на чем теряется основное время Максимум еще можно посомтреть v$session_event, но это уже слишком общая инфа. Хотелось бы сравнить несколько запросов на предмет производительности, но че т мне кажется маловато у меня показателей и что-то я не учел, например, из приведенных выше вьюх не увидишь, как долго происходил execute, fetch. Поделитесь опытом. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2019, 17:14 |
|
метрики сравнения производительности запросов
|
|||
---|---|---|---|
#18+
mlcМаксимум еще можно посомтреть v$session_event, но это уже слишком общая инфа.Ну почему же, в древние времена до AWR пару таблиц v$session_event, v$sesstat (и их эквиваленты уровня системы v$system_event, v$sysstat) были чуть ли не основным источником информации про производительность. Можешь набрать в гугле "oracle yapp". mlcХотелось бы сравнить несколько запросов на предмет производительности, но че т мне кажется маловато у меня показателей и что-то я не учел, например, из приведенных выше вьюх не увидишь, как долго происходил execute, fetch.По понятным причинам fetch в базе не трекается. Это процесс который не может рассматриваться в отрыве от клиента. Можно выдумывать всякие трюки и смотреть первый и последний сэмпл в ash для конкретного запроса чтоб определить "общую длительность выполнения", но их там может не быть. Если всковырнуть dbms_sqltune.report_sql_monitor, то там можно увидеть Код: plaintext 1. 2. 3.
Где для каждого из трех составляющих свой отдельный механизм вычисления. elapsed_time и executions в v$sql вполне достаточно для старта, потом может понадоится еще множество других v$ вьюх или уровней трассировки (+runtime execution statistics) в зависимости от того, что хочется отловить. +уже упомянутый v$sql_monitor PS. Информация для разных инструментов может частично пересекаться, но весьма наивно пытаться получить информацию из трассировки не делая самой трассировки. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2019, 18:15 |
|
метрики сравнения производительности запросов
|
|||
---|---|---|---|
#18+
mlc, gv$sqlstats ( и dba_hist_sqlstats ) содержит разные статистики по конкретному запросу В gV$SQL_PLAN_MONITOR есть инфа для каждой строки плана - сколько раз она выполнялась, сколько строк получилось и сколько времени заняло - если запрос конечно был отмониторен со statistics_level = all. Если тебе интересно сколько времени проходил парс, установка соединения или скажем Pl/sql execution ты можешь замерить GV$SESS_TIME_MODEL до и после. По поводу же "скриптеца" имхо самое универсальное что я использую - это XPLAN_ASH Рэндольфа Гейста. Большой такой скрипт, который дает очень много инфы, думаю, что примерно все что есть в системных таблицах - он анализирует. https://oracle-randolf.blogspot.com/2016/06/new-version-of-xplanash-utility.html Для своего удобства я его чуть допилил чтобы вызывать из pl/sql developer и смотреть результаты одной кнопкой, потому что sql*plus не самая удобная среда разработки. Есть скрипты от Оракла которые дают еще больше диагностической инфы ( типа статистики по таблицам учавствующим в запросах и пр. ) но это уже редко когда нужно, и работать они могут по полчаса. По соотшению информация-время анализа думаю что XPLAN_ASH пока лучший. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2019, 20:31 |
|
метрики сравнения производительности запросов
|
|||
---|---|---|---|
#18+
mlcВсем привет. Задался вопросом о сборе макисмальной инфы о производительности запроса ... Более эффективно не лазить по десяткам представлений, а получить отчёт (пакет), который соберёт всё за тебя, включая SQL monitor, исторические планы, и больше. Рекомендую эти 1. SQLT - требует установки своих пакетов в базу. У него есть одно крайне важное преимущество перед другими - он собирает сразу 2 тест кейса - SQLT и DBMS_SQLDIAG, которые потом можно в другом окружении воспроизводить. Поддерживается Oracle 2. SQLHC - не требует установки чего-либо в базу, поддерживается Oracle 3. SQLd360 , не требует установки. Сторонний. mlcиз приведенных выше вьюх не увидишь, как долго происходил execute, fetch. В ASH есть столбцы IN_PARSE, IN_HARD_PARSE, IN_EXECUTION. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2019, 22:04 |
|
метрики сравнения производительности запросов
|
|||
---|---|---|---|
#18+
ValergradВ gV$SQL_PLAN_MONITOR есть инфа для каждой строки плана - сколько раз она выполнялась, сколько строк получилось и сколько времени заняло - если запрос конечно был отмониторен со statistics_level = all. V$SQL_PLAN_MONITOR это часть Real Time SQL Monitoring, он не связан с statistics_level = all Возможно ты путаешь с V$SQL_PLAN_STATISTICS[_ALL] Лазить туда вручную врядли стоит. Проще получить SQL monitor report. Также скрипт можно (нужно) сделать и вызывать из PL/SQL Developer или другого инструмента. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2019, 22:10 |
|
метрики сравнения производительности запросов
|
|||
---|---|---|---|
#18+
mlc, а что с этой информацией делать собираетесь? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2019, 00:27 |
|
метрики сравнения производительности запросов
|
|||
---|---|---|---|
#18+
делать CBODВАmlc, а что с этой информацией делать собираетесь? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2019, 01:30 |
|
метрики сравнения производительности запросов
|
|||
---|---|---|---|
#18+
Alexander Anokhin3. SQLd360 , не требует установки. Сторонний.edb360 и sqld360 теперь объединены в sqldb360 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2019, 04:22 |
|
метрики сравнения производительности запросов
|
|||
---|---|---|---|
#18+
DВАmlc, а что с этой информацией делать собираетесь? Как подметил Relic Hunter для CBO: mlcХотелось бы сравнить несколько запросов на предмет производительности ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2019, 09:08 |
|
метрики сравнения производительности запросов
|
|||
---|---|---|---|
#18+
Кобанчег, dbms_sqltune с его v$sql_monitor и v$sql_plan_monitor - это конечно здорово, но вот не доступен он на наших средах. Отключен вплоть до прода. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2019, 09:20 |
|
метрики сравнения производительности запросов
|
|||
---|---|---|---|
#18+
Коллеги, нужно учитывать, что даже обращение к некоторым view, может привести к нарушению лицензий (tuning pack, performance pack). Подробнее: Database Licensing Information User Manual Oracle Database Offerings and Their Permitted Features ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2019, 11:24 |
|
метрики сравнения производительности запросов
|
|||
---|---|---|---|
#18+
Alexander AnokhinmlcВсем привет. Задался вопросом о сборе макисмальной инфы о производительности запроса ... Более эффективно не лазить по десяткам представлений, а получить отчёт (пакет), который соберёт всё за тебя, включая SQL monitor, исторические планы, и больше. Рекомендую эти... Здесь конечно вкусовщина, но конкретно они мне не зашли. Дело в том, что они работают, бывает по полчаса на запрос и выдают мегабайтные отчеты среди которых полезного в общем случае дай бог 1% ( т.е. нужно еще продираться между бесполезных данных и искать полезные ). Я в большинстве случаев предпочту утилиту которая работает не дольше минуты, и выдает репорт с исключительно полезными данными, поэтому остановился на xplan_ash. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2019, 17:23 |
|
|
start [/forum/topic.php?fid=52&msg=39883354&tid=1881921]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
52ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 17ms |
total: | 166ms |
0 / 0 |