|
|
|
Оптимизация sql запросов
|
|||
|---|---|---|---|
|
#18+
Добрый день интересует документация по оптимизации sql запросов, может книжка какая есть? В интернете уже сайты пересмотрел, там мало информации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2018, 12:18 |
|
||
|
Оптимизация sql запросов
|
|||
|---|---|---|---|
|
#18+
elimpionДобрый день интересует документация по оптимизации sql запросов, может книжка какая есть? В интернете уже сайты пересмотрел, там мало информации SQL Tuning Guide ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2018, 12:20 |
|
||
|
Оптимизация sql запросов
|
|||
|---|---|---|---|
|
#18+
Тоже интересно, только желательно всё же на русском языке. Oracle. Основы стоимостной оптимизации - хороша, но устарела, так как вышла аж 11 лет назад, когда первая 11.0.1 версия вышла( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2018, 16:22 |
|
||
|
Оптимизация sql запросов
|
|||
|---|---|---|---|
|
#18+
А можно глупый вопрос? А кто сказал, что устарела? Бабушки на улице? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2018, 19:29 |
|
||
|
Оптимизация sql запросов
|
|||
|---|---|---|---|
|
#18+
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) тоже нужны в крайне экзотических случаях. Чаще для "академических изысканий" чем для решения реальных проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2018, 22:54 |
|
||
|
Оптимизация sql запросов
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, это всё понятно, правда с sql trace (event 10046) не соглашусь, так как в промышленной среде проще сделать как раз его, tkprofнуть и понять в чем причина. к тому же у нас есть обертка, позволяющая получать обработанный tkprofом результат прям в приложении, не лазя на сервер. Говоря о том, что книга устарела я имел в ввиду только то, что появилось довольно много новых фич с тех времен, и хотелось бы видеть переиздание книги с описанием всех этих новомодных штучек ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 12:46 |
|
||
|
Оптимизация sql запросов
|
|||
|---|---|---|---|
|
#18+
feagor, Ну приведи пару примеров реальной необходимости установки event 10046 на продакшене вместо того, чтоб посмотреть план и статистику выполнения в ash/sql monitor (+ прочие dynamic performance views). Только из своей практики, фактические отличия инструментов я и сам могу рассказать. За исключением отсутствия лицензии на diagnostic and tuning pack. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 13:01 |
|
||
|
Оптимизация sql запросов
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, заказчик говорит что медленно работает бизнес-операция на проде, куда у нас нет доступа. гораздо проще запросить трассировку с wait и по её результатам быстро выявить виновный запрос/событие ASH не столь информативен если собирать по sid, а по всей системе вообще относительно бесполезен. к тому же трассировка и результат снимаются прям из приложения самим пользователем, что быстрее, нежели подключать админов и просить AWR/ASH/SQL monitor ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 13:08 |
|
||
|
Оптимизация sql запросов
|
|||
|---|---|---|---|
|
#18+
feagorпроще запросить трассировку с waitfeagorASH не столь информативен если собирать по sid, а по всей системе вообще относительно бесполезен.feagorпрям из приложения самим пользователемТ.е. у вас пользователь может включить трассировку по всей системе? Вообще-то ASH как раз удобнее для анализа всей системы в целом. И самое главное, ASH/RTSM позволяют получить информацию "прямо сейчас", а не дожидаться когда "бизнес-операция" на проде выполнится целиком, тем более что для уже работающей "бизнес-операции" - это может оказаться бесполезным, если проблемная часть уже завершилась и придется перезапускать с трассировкой с самого начала. То что вы уже реализовали 10046 и tkprof из приложения - это, конечно, хорошо, но не означает что 10046 лучше и уж тем более отчет tkprof. Обычно если 10046 и нужно, то нужно в сыром виде, а не обработанный огрызок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 14:00 |
|
||
|
Оптимизация sql запросов
|
|||
|---|---|---|---|
|
#18+
feagorпо её результатам быстро выявить виновный запрос/событиену и вы же понимаете, что 10046 не на все даст ответы? Wait interface хоть и улучшается, но все равно еще часто содержит недостаточно диагностической информации. Например, кучи разных проблем с "ON CPU" тупо не продиагностируются 10046, т.к. для него это белое пятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 14:07 |
|
||
|
Оптимизация sql запросов
|
|||
|---|---|---|---|
|
#18+
xtender, xtenderТ.е. у вас пользователь может включить трассировку по всей системе? По своей сессии, а не по всей системе. xtenderВообще-то ASH как раз удобнее для анализа всей системы в целом Согласен, но для анализа конкретной бизнес-операции удобнее именно трассировка xtenderИ самое главное, ASH/RTSM позволяют получить информацию "прямо сейчас", а не дожидаться когда "бизнес-операция" на проде выполнится целиком, тем более что для уже работающей "бизнес-операции" - это может оказаться бесполезным, если проблемная часть уже завершилась и придется перезапускать с трассировкой с самого начала Не понял что такое RTSM, гугл сходу тоже ответа не дал. Обычно если пользователь говорит о проблеме, то это проблема воспроизводимая и не составляете никакого труда снача тыркнуть галочку "включить трассировку", запустить операцию, а после выполнения нажать кнопочку "Показать результат". а в случае с ASH нужно дополнительно подключать администратора, при этом ASH по сессии менее информативен. xtenderОбычно если 10046 и нужно, то нужно в сыром виде, а не обработанный огрызок. Я вынужден не согласится, так как в большинстве случаев в сыром виде в нашем случае она как раз не нужна. Чаще всего мне интересно узнать какие запросы работают дольше всего, сколько раз выполняются и какие у них планы. tkprof в данном случае гораздо удобнее. Более того, я честно говоря, так сразу даже и не могу представить какие-то более-менее стандартные ситуации, когда нужна была бы именно сырая трасса, да может в каких-то особо сложных/непонятных случаях она и нужна, но в большистве случаев tkprof или ORASrp мне предоставят всю необходимую информацию для поиска виновника. xtenderну и вы же понимаете, что 10046 не на все даст ответы? понимаю, но если трассировка не даёт мне ответов, никто же мне не мешает использовать дополнительные инструменты? dbms_photoshop Просил предоставить пример - я его предоставляю и говорю лишь о том, что использование трассировки, как инструмента для первичного анализа в моём случае очень хорошо себя зарекомендовало и в большинстве случае такой подход позволяет сразу же находить виновников ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 16:20 |
|
||
|
Оптимизация sql запросов
|
|||
|---|---|---|---|
|
#18+
feagordbms_photoshop, заказчик говорит что медленно работает бизнес-операция на проде, куда у нас нет доступа. гораздо проще запросить трассировку с wait и по её результатам быстро выявить виновный запрос/событие ASH не столь информативен если собирать по sid, а по всей системе вообще относительно бесполезен. к тому же трассировка и результат снимаются прям из приложения самим пользователем, что быстрее, нежели подключать админов и просить AWR/ASH/SQL monitor как Вы включаете трассировку, чтоб потом не обращатся к серверу за логом? ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 17:09 |
|
||
|
Оптимизация sql запросов
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopStax, Создаешь оракловую директорию и file2clob , например. Обсуждалось неоднократно. тоесть дают доступ к каталогу логов на сервере через директорию понятно ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 17:36 |
|
||
|
Оптимизация sql запросов
|
|||
|---|---|---|---|
|
#18+
Stax, да именно так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 18:02 |
|
||
|
Оптимизация sql запросов
|
|||
|---|---|---|---|
|
#18+
А мне казалось, что от того, что на проде, куда нет доступа, есть какая-то директория, не холодно, ни жарко ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 18:02 |
|
||
|
Оптимизация sql запросов
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopСоздаешь оракловую директорию и file2clob , например. bfilename типа не наш метод, обязательно надо гигаз варезов в базу затащить? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 19:41 |
|
||
|
Оптимизация sql запросов
|
|||
|---|---|---|---|
|
#18+
feagorxtenderОбычно если 10046 и нужно, то нужно в сыром виде, а не обработанный огрызок. Я вынужден не согласится, так как в большинстве случаев в сыром виде в нашем случае она как раз не нужна. Чаще всего мне интересно узнать какие запросы работают дольше всего, сколько раз выполняются и какие у них планы. О-ёёёё.... Именно в представленном сценарии ("узнать какие запросы работают дольше всего, сколько раз выполняются и какие у них планы.") 10046 нафиг не нужна. Она _иногда может пригодиться именно в виде RAW-трассировки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 19:45 |
|
||
|
Оптимизация sql запросов
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousdbms_photoshopСоздаешь оракловую директорию и file2clob , например. bfilename типа не наш метод, обязательно надо гигаз варезов в базу затащить? :)Не так, чтоб обязательно, но желательно перед комментированием содержания переходить по ссылке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 20:14 |
|
||
|
Оптимизация sql запросов
|
|||
|---|---|---|---|
|
#18+
тогда как у нормальных людей Код: plsql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 20:19 |
|
||
|
Оптимизация sql запросов
|
|||
|---|---|---|---|
|
#18+
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. вместо простого https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions012.htm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 20:22 |
|
||
|
Оптимизация sql запросов
|
|||
|---|---|---|---|
|
#18+
По-моему, все кто говорят о том что "трассировка удобней чем ASH/AWR анализ" просто не умеют работать c ASH. Если бы я каждый раз когда мне говорят "У нас сегодня ночью вот этот процесс работал 6 часов, а не 4, не можешь посмотреть в чем дело?" предлагал им включить трассировку и запустить все еще раз заново, ожидая еще 6+ часов, а потом еще тратил бог знает сколько часов на анализ полученного многомегабайтного отчета OraSRP - меня бы наверное уволили ( утрирую ). Не говоря о том, что "включить трассировку только на бизнес-процесс" можно только, если уже реализовано, что этот бизнес-процесс является единственным пользователем определенного сервиса, инстанса или устанавливает в процесс определенный module - что бывает далеко не всегда. Не говоря о том, что конкарренси ишью собрав трассу только у своего бизнес-процесса расследовать не получится. Не говоря о том, что многие ишью просто невоспроизводимы или воспроизводятся не каждый раз. Не говоря о том, что анализировать данные в ASH/AWR имея в своем распоряжении всю мощь Oracle SQL неизмеримо удобнее чем возиться с плоским ( в случае tkprof ) или html ( ряд других туловин ) файлов. Понятно, что ASH содержит не все, и это единственный кейс включения трассировки - когда тебе нужна инфа, которой в ASH/AWR просто нет. Но такое бывает не более чем в 10% случаев, т.к. ASH/AWR - это в районе сотни таблиц, которые содержат информацию нужную для расследования всех типичных проблем производительности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2018, 00:51 |
|
||
|
Оптимизация sql запросов
|
|||
|---|---|---|---|
|
#18+
feagorASH не столь информативен если собирать по sid, а по всей системе вообще относительно бесполезен.ёклмн...что тогда полезно по всей системе? 10046? feagorНе понял что такое RTSM, гугл сходу тоже ответа не дал. http://bfy.tw/HcYp feagorснача тыркнуть галочку "включить трассировку", запустить операцию, а после выполнения нажать кнопочку "Показать результат". а в случае с ASH нужно дополнительно подключать администраторахахъ, админы вам гранты на включение трассировки дали, читать файлики позволили, и они вам не нужны, а вьюшки поселектить без админов никак? feagorОбычно если пользователь говорит о проблеме, то это проблема воспроизводимаядаже хрен с ним, что вполне себе часто бывает, что при повторном точно таком же вызове проблема не воспроизводится(например, была блокировка час назад, а сейчас уже нет или тупо план уже поменялся), но как насчет такой частой вещи как автоматические процессы, которые к тому же неизвестно когда повторятся с точно такими же параметрами(например, обработка документов редкого типа)? feagorпри этом ASH по сессии менее информативен Серьезно? feagorиспользование трассировки, как инструмента для первичного анализа в моём случае очень хорошо себя зарекомендовало и в большинстве случае такой подход позволяет сразу же находить виновниковни хрена себе сразу же ... А может просто "в вашем случае" просто нет ни опыта работы с другими performance views, ни желания их изучить? Как вообще можно заниматься оптимизацией производительности и при этом не оптимизировать свою работу? Вообще не знаю, что это меня бомбануло так, что в такую заезженную тему снова влез, тем более что я уже многократно высказывался на эту тему, например недавно тут и тут . Почитай оба треда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2018, 03:05 |
|
||
|
Оптимизация sql запросов
|
|||
|---|---|---|---|
|
#18+
xtender, Не стоит так бомбить. Судя по приведенным ссылкам на дискуссии, у старожилов просто начинает бомбить после того, как они слышат, что кто-то использует трассировку. По сабжу - я привел вполне конкретный сценарий, вы же его начинаете расширять за те рамки, где трассировка действительно будет бесполезной, возможно я как-то некорректно описал сценарий, попробую еще раз: Есть клиент на поддержке, у клиента возникает проблема с конкретной бизнес-операцией, в одной сессии , работающей 5 минут вместо 2-3 секунд. При этом доступа на прод у нас абсолютно нет . Зато в приложении, через которое запускаются операции есть возможность включить трассировку своей же сессии, а затем так же через приложение,самим пользователем, получить tkprofнутый результат. Повторюсь, у нас при этом доступа к проду нет и xtenderхахъ, админы вам гранты на включение трассировки дали, читать файлики позволили, и они вам не нужны, а вьюшки поселектить без админов никак? мы не можем поселектить вьюшки. При этом проблема в 90% случаев будет в корявом запросе, который эта самая ненавистная tkprofнутая трассировка сразу же покажет в самом верху. Речь не идёт о проблемах с блокировками/латчами/мьютексами Речь не идёт о каких-то много-сессионных операциях и параллельных вычислениях Речь не идёт о xtenderно как насчет такой частой вещи как автоматические процессы Речь не идёт об общем падении производительности по базе Речь не идёт о проблемах с железом При возникновении подобных ситуаций будут меняться и инструменты Речь идёт о вполне конкретном сценарии, с вполне конкретными условиями и возможностями получения информации. И в таких условиях получить и отправить результат tkprof-нутой трассировки может сам пользователь бизнес-операции, что гораздо проще и быстрее, нежели привлекать админов и просить ASH/AWR/SQL monitor отчёты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2018, 13:52 |
|
||
|
Оптимизация sql запросов
|
|||
|---|---|---|---|
|
#18+
feagorпосле того, как они слышат, что кто-то использует трассировку.это не проблема, все используют 10046, когда это действительно нужно... Раздражает, когда из нее делают священную корову и безапелляционно заявляют такое: feagorв промышленной среде проще сделать как раз его, tkprofнуть и понять в чем причина.feagorASH не столь информативен если собирать по sid, а по всей системе вообще относительно бесполезен.avduне использование трассировки на первом месте, а тем более не рассмотрение ее как таковой - моветон. Если перевести - плохое воспитание, дурные манеры, а если точнее - не профессионально. Есть только одна причина избежать трассировки - некая невозможность ее проведения.avduпоймет только знаток трассировкиavduесли причина - плохая сеть, то это выявит только трассировкаavduПросто у меня есть метод, выстраданный за годы попыток. Метод широко известный, но мало используемый. А жаль. Я сам пришел к нему довольно поздно, хотя он буквально валяется под ногами. Не надо пытаться преподнести ее как какое-то труднопостигаемое дао! Действительно нужно знать как ее запускать и анализировать, но это элементарная вещь, которую, как правило, и изучают первой при знакомстве с oracle wait interface. Как к этому можно "идти годами"? Зачем делать категоричные заявления о других инструментах, не зная их? зы. и не говорите все время "трассировка" имея ввиду конкретный 10046 - sql trace. Разных трассировок полно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2018, 14:48 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39629335&tid=1884136]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
89ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
75ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 459ms |

| 0 / 0 |
