powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Оптимизация sql запросов
25 сообщений из 38, страница 1 из 2
Оптимизация sql запросов
    #39628328
elimpion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день интересует документация по оптимизации sql запросов, может книжка какая есть? В интернете уже сайты пересмотрел, там мало информации
...
Рейтинг: 0 / 0
Оптимизация sql запросов
    #39628329
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
elimpionДобрый день интересует документация по оптимизации sql запросов, может книжка какая есть? В интернете уже сайты пересмотрел, там мало информации
SQL Tuning Guide
...
Рейтинг: 0 / 0
Оптимизация sql запросов
    #39628556
feagor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тоже интересно, только желательно всё же на русском языке.
Oracle. Основы стоимостной оптимизации - хороша, но устарела, так как вышла аж 11 лет назад, когда первая 11.0.1 версия вышла(
...
Рейтинг: 0 / 0
Оптимизация sql запросов
    #39628707
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А можно глупый вопрос? А кто сказал, что устарела? Бабушки на улице?
...
Рейтинг: 0 / 0
Оптимизация sql запросов
    #39628741
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
feagor,

В Оракле по прежнему три вида соединений HJ/NL/MERGE.
Плюс операция FILTER которая в отличие от соединений может оперировать более чем двумя row source.

Для тюнинга запросов в 99% случаев надо уметь две вещи
1) Смотреть на каких операциях плана тратится время. Тут поможет dbms_xplan + ASH (sql_plan_line_id) или dbms_sqltune.report_sql_monitor.
2) Умение читать план и понимать механику вышеозвученного. Ну и иметь представление про query transformations, чтоб понимать как был получен такой план.

А всякие новомодые adaptive query optimization - это от лукавого.

Старомодные sql trace (event 10046) тоже нужны в крайне экзотических случаях.
Чаще для "академических изысканий" чем для решения реальных проблем.
...
Рейтинг: 0 / 0
Оптимизация sql запросов
    #39629033
feagor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dbms_photoshop,

это всё понятно, правда с sql trace (event 10046) не соглашусь, так как в промышленной среде проще сделать как раз его, tkprofнуть и понять в чем причина. к тому же у нас есть обертка, позволяющая получать обработанный tkprofом результат прям в приложении, не лазя на сервер.
Говоря о том, что книга устарела я имел в ввиду только то, что появилось довольно много новых фич с тех времен, и хотелось бы видеть переиздание книги с описанием всех этих новомодных штучек
...
Рейтинг: 0 / 0
Оптимизация sql запросов
    #39629050
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
feagor,

Ну приведи пару примеров реальной необходимости установки event 10046 на продакшене вместо того,
чтоб посмотреть план и статистику выполнения в ash/sql monitor (+ прочие dynamic performance views).
Только из своей практики, фактические отличия инструментов я и сам могу рассказать.

За исключением отсутствия лицензии на diagnostic and tuning pack.
...
Рейтинг: 0 / 0
Оптимизация sql запросов
    #39629059
feagor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dbms_photoshop,

заказчик говорит что медленно работает бизнес-операция на проде, куда у нас нет доступа.
гораздо проще запросить трассировку с wait и по её результатам быстро выявить виновный запрос/событие
ASH не столь информативен если собирать по sid, а по всей системе вообще относительно бесполезен.
к тому же трассировка и результат снимаются прям из приложения самим пользователем, что быстрее, нежели подключать админов и просить AWR/ASH/SQL monitor
...
Рейтинг: 0 / 0
Оптимизация sql запросов
    #39629131
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
feagorпроще запросить трассировку с waitfeagorASH не столь информативен если собирать по sid, а по всей системе вообще относительно бесполезен.feagorпрям из приложения самим пользователемТ.е. у вас пользователь может включить трассировку по всей системе? Вообще-то ASH как раз удобнее для анализа всей системы в целом.
И самое главное, ASH/RTSM позволяют получить информацию "прямо сейчас", а не дожидаться когда "бизнес-операция" на проде выполнится целиком, тем более что для уже работающей "бизнес-операции" - это может оказаться бесполезным, если проблемная часть уже завершилась и придется перезапускать с трассировкой с самого начала. То что вы уже реализовали 10046 и tkprof из приложения - это, конечно, хорошо, но не означает что 10046 лучше и уж тем более отчет tkprof. Обычно если 10046 и нужно, то нужно в сыром виде, а не обработанный огрызок.
...
Рейтинг: 0 / 0
Оптимизация sql запросов
    #39629141
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
feagorпо её результатам быстро выявить виновный запрос/событиену и вы же понимаете, что 10046 не на все даст ответы? Wait interface хоть и улучшается, но все равно еще часто содержит недостаточно диагностической информации. Например, кучи разных проблем с "ON CPU" тупо не продиагностируются 10046, т.к. для него это белое пятно.
...
Рейтинг: 0 / 0
Оптимизация sql запросов
    #39629278
feagor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xtender,

xtenderТ.е. у вас пользователь может включить трассировку по всей системе?
По своей сессии, а не по всей системе.
xtenderВообще-то ASH как раз удобнее для анализа всей системы в целом Согласен, но для анализа конкретной бизнес-операции удобнее именно трассировка
xtenderИ самое главное, ASH/RTSM позволяют получить информацию "прямо сейчас", а не дожидаться когда "бизнес-операция" на проде выполнится целиком, тем более что для уже работающей "бизнес-операции" - это может оказаться бесполезным, если проблемная часть уже завершилась и придется перезапускать с трассировкой с самого начала
Не понял что такое RTSM, гугл сходу тоже ответа не дал. Обычно если пользователь говорит о проблеме, то это проблема воспроизводимая и не составляете никакого труда снача тыркнуть галочку "включить трассировку", запустить операцию, а после выполнения нажать кнопочку "Показать результат". а в случае с ASH нужно дополнительно подключать администратора, при этом ASH по сессии менее информативен.
xtenderОбычно если 10046 и нужно, то нужно в сыром виде, а не обработанный огрызок. Я вынужден не согласится, так как в большинстве случаев в сыром виде в нашем случае она как раз не нужна. Чаще всего мне интересно узнать какие запросы работают дольше всего, сколько раз выполняются и какие у них планы. tkprof в данном случае гораздо удобнее. Более того, я честно говоря, так сразу даже и не могу представить какие-то более-менее стандартные ситуации, когда нужна была бы именно сырая трасса, да может в каких-то особо сложных/непонятных случаях она и нужна, но в большистве случаев tkprof или ORASrp мне предоставят всю необходимую информацию для поиска виновника.
xtenderну и вы же понимаете, что 10046 не на все даст ответы? понимаю, но если трассировка не даёт мне ответов, никто же мне не мешает использовать дополнительные инструменты?
dbms_photoshop Просил предоставить пример - я его предоставляю и говорю лишь о том, что использование трассировки, как инструмента для первичного анализа в моём случае очень хорошо себя зарекомендовало и в большинстве случае такой подход позволяет сразу же находить виновников
...
Рейтинг: 0 / 0
Оптимизация sql запросов
    #39629335
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
feagordbms_photoshop,

заказчик говорит что медленно работает бизнес-операция на проде, куда у нас нет доступа.
гораздо проще запросить трассировку с wait и по её результатам быстро выявить виновный запрос/событие
ASH не столь информативен если собирать по sid, а по всей системе вообще относительно бесполезен.
к тому же трассировка и результат снимаются прям из приложения самим пользователем, что быстрее, нежели подключать админов и просить AWR/ASH/SQL monitor

как Вы включаете трассировку, чтоб потом не обращатся к серверу за логом?

.....
stax
...
Рейтинг: 0 / 0
Оптимизация sql запросов
    #39629352
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,

Создаешь оракловую директорию и file2clob , например.
Обсуждалось неоднократно.
...
Рейтинг: 0 / 0
Оптимизация sql запросов
    #39629363
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopStax,

Создаешь оракловую директорию и file2clob , например.
Обсуждалось неоднократно.
тоесть дают доступ к каталогу логов на сервере

через директорию понятно



.....
stax
...
Рейтинг: 0 / 0
Оптимизация sql запросов
    #39629389
feagor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax, да именно так
...
Рейтинг: 0 / 0
Оптимизация sql запросов
    #39629390
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А мне казалось, что от того, что на проде, куда нет доступа, есть какая-то директория, не холодно, ни жарко
...
Рейтинг: 0 / 0
Оптимизация sql запросов
    #39629434
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopСоздаешь оракловую директорию и file2clob , например.
bfilename типа не наш метод, обязательно надо гигаз варезов в базу затащить? :)
...
Рейтинг: 0 / 0
Оптимизация sql запросов
    #39629436
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
feagorxtenderОбычно если 10046 и нужно, то нужно в сыром виде, а не обработанный огрызок. Я вынужден не согласится, так как в большинстве случаев в сыром виде в нашем случае она как раз не нужна. Чаще всего мне интересно узнать какие запросы работают дольше всего, сколько раз выполняются и какие у них планы.
О-ёёёё....
Именно в представленном сценарии ("узнать какие запросы работают дольше всего, сколько раз выполняются и какие у них планы.") 10046 нафиг не нужна.
Она _иногда может пригодиться именно в виде RAW-трассировки.
...
Рейтинг: 0 / 0
Оптимизация sql запросов
    #39629456
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousdbms_photoshopСоздаешь оракловую директорию и file2clob , например.
bfilename типа не наш метод, обязательно надо гигаз варезов в базу затащить? :)Не так, чтоб обязательно, но желательно перед комментированием содержания переходить по ссылке.
...
Рейтинг: 0 / 0
Оптимизация sql запросов
    #39629457
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда как у нормальных людей

Код: plsql
1.
2.
3.
SELECT * FROM table(rdsadmin.rds_file_util.listdir('BDUMP'));
/
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','alert_xxx.log'));
...
Рейтинг: 0 / 0
Оптимизация sql запросов
    #39629459
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopandrey_anonymousпропущено...

bfilename типа не наш метод, обязательно надо гигаз варезов в базу затащить? :)Не так, чтоб обязательно, но желательно перед комментированием содержания переходить по ссылке.
Ммм?
По ссылке:
Код: plsql
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.
  function file2clob(p_filename in varchar2) return clob is
    l_clob         clob;
    l_bfile        bfile := bfilename('UDUMP', p_filename);
    l_dest_offset  integer := 1;
    l_src_offset   integer := 1;
    l_lang_context integer := dbms_lob.default_lang_ctx;
    l_warning      integer;
  begin
  
    dbms_lob.createtemporary(l_clob, false, dbms_lob.call);
    dbms_lob.fileopen(l_bfile);
  
    dbms_lob.loadclobfromfile(l_clob,
                              l_bfile,
                              dbms_lob.lobmaxsize,
                              l_dest_offset,
                              l_src_offset,
                              dbms_lob.default_csid,
                              l_lang_context,
                              l_warning);
  
    dbms_lob.fileclose(l_bfile);
    return l_clob;
  
  end;



вместо простого https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions012.htm
...
Рейтинг: 0 / 0
Оптимизация sql запросов
    #39629548
Valergrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-моему, все кто говорят о том что "трассировка удобней чем ASH/AWR анализ" просто не умеют работать c ASH.
Если бы я каждый раз когда мне говорят "У нас сегодня ночью вот этот процесс работал 6 часов, а не 4, не можешь посмотреть в чем дело?" предлагал им включить трассировку и запустить все еще раз заново, ожидая еще 6+ часов, а потом еще тратил бог знает сколько часов на анализ полученного многомегабайтного отчета OraSRP - меня бы наверное уволили ( утрирую ).
Не говоря о том, что "включить трассировку только на бизнес-процесс" можно только, если уже реализовано, что этот бизнес-процесс является единственным пользователем определенного сервиса, инстанса или устанавливает в процесс определенный module - что бывает далеко не всегда.
Не говоря о том, что конкарренси ишью собрав трассу только у своего бизнес-процесса расследовать не получится.
Не говоря о том, что многие ишью просто невоспроизводимы или воспроизводятся не каждый раз.
Не говоря о том, что анализировать данные в ASH/AWR имея в своем распоряжении всю мощь Oracle SQL неизмеримо удобнее чем возиться с плоским ( в случае tkprof ) или html ( ряд других туловин ) файлов.

Понятно, что ASH содержит не все, и это единственный кейс включения трассировки - когда тебе нужна инфа, которой в ASH/AWR просто нет. Но такое бывает не более чем в 10% случаев, т.к. ASH/AWR - это в районе сотни таблиц, которые содержат информацию нужную для расследования всех типичных проблем производительности.
...
Рейтинг: 0 / 0
Оптимизация sql запросов
    #39629562
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
feagorASH не столь информативен если собирать по sid, а по всей системе вообще относительно бесполезен.ёклмн...что тогда полезно по всей системе? 10046?

feagorНе понял что такое RTSM, гугл сходу тоже ответа не дал. http://bfy.tw/HcYp

feagorснача тыркнуть галочку "включить трассировку", запустить операцию, а после выполнения нажать кнопочку "Показать результат". а в случае с ASH нужно дополнительно подключать администраторахахъ, админы вам гранты на включение трассировки дали, читать файлики позволили, и они вам не нужны, а вьюшки поселектить без админов никак?

feagorОбычно если пользователь говорит о проблеме, то это проблема воспроизводимаядаже хрен с ним, что вполне себе часто бывает, что при повторном точно таком же вызове проблема не воспроизводится(например, была блокировка час назад, а сейчас уже нет или тупо план уже поменялся), но как насчет такой частой вещи как автоматические процессы, которые к тому же неизвестно когда повторятся с точно такими же параметрами(например, обработка документов редкого типа)?

feagorпри этом ASH по сессии менее информативен Серьезно?

feagorиспользование трассировки, как инструмента для первичного анализа в моём случае очень хорошо себя зарекомендовало и в большинстве случае такой подход позволяет сразу же находить виновниковни хрена себе сразу же ...
А может просто "в вашем случае" просто нет ни опыта работы с другими performance views, ни желания их изучить? Как вообще можно заниматься оптимизацией производительности и при этом не оптимизировать свою работу?

Вообще не знаю, что это меня бомбануло так, что в такую заезженную тему снова влез, тем более что я уже многократно высказывался на эту тему, например недавно тут и тут . Почитай оба треда
...
Рейтинг: 0 / 0
Оптимизация sql запросов
    #39629849
feagor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xtender,

Не стоит так бомбить. Судя по приведенным ссылкам на дискуссии, у старожилов просто начинает бомбить после того, как они слышат, что кто-то использует трассировку.
По сабжу - я привел вполне конкретный сценарий, вы же его начинаете расширять за те рамки, где трассировка действительно будет бесполезной, возможно я как-то некорректно описал сценарий, попробую еще раз:
Есть клиент на поддержке, у клиента возникает проблема с конкретной бизнес-операцией, в одной сессии , работающей 5 минут вместо 2-3 секунд. При этом доступа на прод у нас абсолютно нет .
Зато в приложении, через которое запускаются операции есть возможность включить трассировку своей же сессии, а затем так же через приложение,самим пользователем, получить tkprofнутый результат.
Повторюсь, у нас при этом доступа к проду нет и xtenderхахъ, админы вам гранты на включение трассировки дали, читать файлики позволили, и они вам не нужны, а вьюшки поселектить без админов никак? мы не можем поселектить вьюшки.
При этом проблема в 90% случаев будет в корявом запросе, который эта самая ненавистная tkprofнутая трассировка сразу же покажет в самом верху.

Речь не идёт о проблемах с блокировками/латчами/мьютексами
Речь не идёт о каких-то много-сессионных операциях и параллельных вычислениях
Речь не идёт о xtenderно как насчет такой частой вещи как автоматические процессы
Речь не идёт об общем падении производительности по базе
Речь не идёт о проблемах с железом
При возникновении подобных ситуаций будут меняться и инструменты

Речь идёт о вполне конкретном сценарии, с вполне конкретными условиями и возможностями получения информации.
И в таких условиях получить и отправить результат tkprof-нутой трассировки может сам пользователь бизнес-операции, что гораздо проще и быстрее, нежели привлекать админов и просить ASH/AWR/SQL monitor отчёты.
...
Рейтинг: 0 / 0
Оптимизация sql запросов
    #39629899
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
feagorпосле того, как они слышат, что кто-то использует трассировку.это не проблема, все используют 10046, когда это действительно нужно... Раздражает, когда из нее делают священную корову и безапелляционно заявляют такое:
feagorв промышленной среде проще сделать как раз его, tkprofнуть и понять в чем причина.feagorASH не столь информативен если собирать по sid, а по всей системе вообще относительно бесполезен.avduне использование трассировки на первом месте, а тем более не рассмотрение ее как таковой - моветон.
Если перевести - плохое воспитание, дурные манеры, а если точнее - не профессионально.
Есть только одна причина избежать трассировки - некая невозможность ее проведения.avduпоймет только знаток трассировкиavduесли причина - плохая сеть, то это выявит только трассировкаavduПросто у меня есть метод, выстраданный за годы попыток. Метод широко известный, но мало используемый. А жаль.
Я сам пришел к нему довольно поздно, хотя он буквально валяется под ногами.

Не надо пытаться преподнести ее как какое-то труднопостигаемое дао! Действительно нужно знать как ее запускать и анализировать, но это элементарная вещь, которую, как правило, и изучают первой при знакомстве с oracle wait interface. Как к этому можно "идти годами"? Зачем делать категоричные заявления о других инструментах, не зная их?

зы. и не говорите все время "трассировка" имея ввиду конкретный 10046 - sql trace. Разных трассировок полно.
...
Рейтинг: 0 / 0
25 сообщений из 38, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Оптимизация sql запросов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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