|
|
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
пытаюсь разобраться, почему висит программа на одном запросе около минуты, хотя если его выполняю в sqlplus - выполняется миллисекунды и план нормальный - без фулл скэнов. Смотрю v$session_wait. вот типичный пример: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2008, 19:09 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
Отсюда много не увидишь: латчи - они такие, что без них никуда. Другое дело, как часто приходится их перезапрашивать и переперезапрашивать и пере... Хорошо бы трассировку сделать, или посмотреть v$session_event по сессии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2008, 19:18 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
jan2ary Хорошо бы трассировку сделать, или посмотреть v$session_event по сессии. сорри, это конечно был v$session_wait_history, не v$session_wait... Вот привожу v$session_event - не очень хорошо я понимаю, как это нужно расшифровывать... Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2008, 19:34 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
Судя по топовому ожиданию и его отрыву от ближайших преследователей - где-то Ваша программа слишком долго думает (над возвращенными результатами, либо о чем-то своем). В таком случае база тут ни при чем, весь затык в приложении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2008, 20:26 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
По сравнению с количеством roundtrips с клиентом (13 миллионов) все остальное - ерунда. "Нехорошие" ожидания из-за того, что эту табличку слишном интенсивно читают несколько сессий, отсюда "read by other session" - сессия хочет блок, но ждет, пока его читает другая сессия. Хотя, конечно, в среднем 0.2 секунды многовато на один RbOS, но при большом объеме LIO вполне может быть. А возвращаясь к начальному вопросу (плчему висит программа) - это у программы и спрашивайте, судя по всему она очень уж много резурсов тратит на обработку каждой строки получаемого запроса. Вполне возможно, что она умеет брать только строчка-за-строчкой, а не пакетно, что вполне объясняет 0.2 секунды на сетевое взаимодействие + время обработки одной строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2008, 20:31 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
latch freeпытаюсь разобраться, почему висит программа на одном запросе около минуты, хотя если его выполняю в sqlplus - выполняется миллисекунды и план нормальный - без фулл скэнов. Смотрю v$session_wait. вот типичный пример: Код: plaintext 1. 2. Наименование можно выцепить. И посмотреть на металинке инфу насчёт него. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 09:55 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
Латчи - лишь симптом. Причина похоже не в базе а в ожидании реакции клиента. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 10:06 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
StarBladeЛатчи - лишь симптом. Причина похоже не в базе а в ожидании реакции клиента. Если ты не в курсе, ожидания типа SQL*Net message from client как правило в расчёт не берутся. Рекация клиента тут непричём. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 10:08 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
sql+ Если ты не в курсе, ожидания типа SQL*Net message from client как правило в расчёт не берутся. Рекация клиента тут непричём. В расчет чего? В плюсе мгновенно - а в приложении (судя по всему) медленно. Ну и на рабочей базе (если это действительно рабочая) все не так однозначно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 10:20 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
sql+Если ты не в курсе, ожидания типа SQL*Net message from client как правило в расчёт не берутся.Я бы не обобщал. SQL*Net Message from client - Idle Time or your Problem? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 10:23 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
sql+ StarBladeЛатчи - лишь симптом. Причина похоже не в базе а в ожидании реакции клиента. Если ты не в курсе, ожидания типа SQL*Net message from client как правило в расчёт не берутся. Рекация клиента тут непричём. Вы очень категоричны Вы знаете, что "как правило в расчет не берутся", но можете объяснить, что это за "правило", позволяющее игнорировать ожидание, возникающее в 10 раз чаще любого другого? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 10:27 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
Я бы был категоричен если бы это была исключительно моя точка зрения. Однако в любом отчёте statspack вы увидете такую фразу:ordered by wait time desc, waits desc ( idle events last ) Код: plaintext 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. В самом конце Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Поэтому как правило, данное ожидание не должно браться в расчёт. По той информации, которую выдал автор темы, нет никаких оснований утверждать иное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 10:39 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
RA\/EN sql+ StarBladeЛатчи - лишь симптом. Причина похоже не в базе а в ожидании реакции клиента. Если ты не в курсе, ожидания типа SQL*Net message from client как правило в расчёт не берутся. Рекация клиента тут непричём. Вы очень категоричны Вы знаете, что "как правило в расчет не берутся", но можете объяснить, что это за "правило", позволяющее игнорировать ожидание, возникающее в 10 раз чаще любого другого? А объяснить проще простого - клиент ничего не делает в приложении- пъёт чай, курит, пошёл пописать, вызвали к начальсту, смотрит почту, переписывается в аське - а приложение загружено - но ничего не делает, а событие SQL*Net message from client тем временем увеличивается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 10:42 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
sql+Я бы был категоричен если бы это была исключительно моя точка зрения. Однако в любом отчёте statspack вы увидете такую фразу:ordered by wait time desc, waits desc ( idle events last ) ... Поэтому как правило, данное ожидание не должно браться в расчёт. По той информации, которую выдал автор темы, нет никаких оснований утверждать иное. latch freeпочему висит программа на одном запросе около минуты, хотя если его выполняю в sqlplus - выполняется миллисекунды Не, не оно? Соотношение TOTAL WAITS у SQL*Net message from client и db file scattered read тоже ни о чем не говорит? Рассмотрение каждого отдельного ожидания в отрыве от остальных - что-то вроде утверждения "90-60-90 - идеальная девушка!", не обращая внимание на то, что это "рост-возраст-вес" P.S. Я не утверждаю, что возможная проблема в клиенте - единственно верный и окончательный диагноз (хотя по симптомам - именно оно), но отвергать версию ("Рекация клиента тут непричём.") с аргументацией в виде сортировки статспаковских отчетов - юношеский максимализм. Еще раз подумайте над КОЛИЧЕСТВОМ ожиданий SQL*Net message from client. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 11:05 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
sql+А объяснить проще простого - клиент ничего не делает в приложении- пъёт чай, курит, пошёл пописать, вызвали к начальсту, смотрит почту, переписывается в аське - а приложение загружено - но ничего не делает, а событие SQL*Net message from client тем временем увеличивается. ... либо лопатит кучу данных _построчно_ с огромным количеством roundtrip'ов (что характерно для топикстартера). Оракл ведь считает что они idle потому что для него они действительно idle, но не для клиента - они входят в респонс тайм приложения точно так же как и другие ивенты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 11:07 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
sql+ А объяснить проще простого - клиент ничего не делает в приложении- пъёт чай, курит, пошёл пописать, вызвали к начальсту, смотрит почту, переписывается в аське - а приложение загружено - но ничего не делает, а событие SQL*Net message from client тем временем увеличивается. Да, всё так :-). Программа (это фоновый процесс) и ORACLE не находятся в состоянии непрерывного обмена данными, но остаются connected. Т.е. в цикле есть период активности, потом программа засыпает на 10 секунд, просыпается и снова что-то делает... единственно, что не очень понятно - что количество SQL*Net message from client и SQL*Net message to client одинаково (хотя время существенно различается). SQL*Net message to client чего ждет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 11:09 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
ступил, сорри... :-/ Всё понятно: при N сеансах работы есть N*M SQL*Net message to client и N*M SQL*Net message from client (ну может на один меньше :-). Из SQL*Net message from client олько один - последний - тянется до начала следующего сеанса, а среди SQL*Net message to client таких длинных нет вообще ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 11:19 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
RA\/EN "Нехорошие" ожидания из-за того, что эту табличку слишном интенсивно читают несколько сессий, отсюда "read by other session" - сессия хочет блок, но ждет, пока его читает другая сессия. Подозреваю что ты неправильно понимаешь смысл данного события. Связи между "эту табличку слишном интенсивно читают несколько сессий" и данным ожиданием нет никакой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 11:24 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
sql+ RA\/EN "Нехорошие" ожидания из-за того, что эту табличку слишном интенсивно читают несколько сессий, отсюда "read by other session" - сессия хочет блок, но ждет, пока его читает другая сессия. Подозреваю что ты неправильно понимаешь смысл данного события. Связи между "эту табличку слишном интенсивно читают несколько сессий" и данным ожиданием нет никакой. не могли бы вы тогда обьяснить смысл этого события? Меня оно как раз тоже заинтересовало, но путных обьяснений пока не нашел... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 11:50 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
Предлагаю сначала послушать RAVEN-а, как он это понимает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 11:51 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
sql+ RA\/EN "Нехорошие" ожидания из-за того, что эту табличку слишном интенсивно читают несколько сессий, отсюда "read by other session" - сессия хочет блок, но ждет, пока его читает другая сессия. Подозреваю что ты неправильно понимаешь смысл данного события. Связи между "эту табличку слишном интенсивно читают несколько сессий" и данным ожиданием нет никакой. Да ну? а по-моему, такая связь прослеживается очень часто. Две сессии, читающие данные таблички, желают видеть в кэше один и тот же блок. одна читает, другая ждет - очень распространенная ситуевина. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 12:00 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
Timm sql+ RA\/EN "Нехорошие" ожидания из-за того, что эту табличку слишном интенсивно читают несколько сессий, отсюда "read by other session" - сессия хочет блок, но ждет, пока его читает другая сессия. Подозреваю что ты неправильно понимаешь смысл данного события. Связи между "эту табличку слишном интенсивно читают несколько сессий" и данным ожиданием нет никакой. Да ну? а по-моему, такая связь прослеживается очень часто. Две сессии, читающие данные таблички, желают видеть в кэше один и тот же блок. одна читает, другая ждет - очень распространенная ситуевина. Так как ты это описал - может. В том как сформулировал RAVEN мне показалось не совсем. Я надеюсь что он всё таки появится и уточнит что он имел ввиду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 12:09 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
sql+ RA\/EN "Нехорошие" ожидания из-за того, что эту табличку слишном интенсивно читают несколько сессий, отсюда "read by other session" - сессия хочет блок, но ждет, пока его читает другая сессия. Подозреваю что ты неправильно понимаешь смысл данного события. Связи между "эту табличку слишном интенсивно читают несколько сессий" и данным ожиданием нет никакой. 2sql+: Первая же ссылка в гугле: Read By Other Session Definition: When information is requested from the database, Oracle will first read the data from disk into the database buffer cache. If two or more sessions request the same information, the first session will read the data into the buffer cache while other sessions wait. In previous versions this wait was classified under the "buffer busy waits" event. However, in Oracle 10.1 and higher this wait time is now broken out into the "read by other session" wait event. Excessive waits for this event are typically due to several processes repeatedly reading the same blocks, e.g. many sessions scanning the same index or performing full table scans on the same table. Tuning this issue is a matter of finding and eliminating this contention. Перевести на русский? 2latch free: latch freeпытаюсь разобраться, почему висит программа на одном запросе около минуты latch freeДа, всё так :-). Программа (это фоновый процесс) и ORACLE не находятся в состоянии непрерывного обмена данными, но остаются connected. Т.е. в цикле есть период активности, потом программа засыпает на 10 секунд, просыпается и снова что-то делает... Так, значит, не "программа", а "фоновый процесс". Объясните, что значит "висит"? Для того, чтобы не знаниматься гаданием на кофейной гуще, приведите 2 факта: 1. Загрузка ЦПУ "висящим" процессом 2. Трейс сессии за 10 минут (лучше непарсеный в архиве) - как снять трассировку - в разделе FAQ данного сайта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 12:43 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
На русский не нужно переводить. Я просто хотел понять как ты понимаешь суть ожидания, чего именно ждут сессии. В данном твоя случае ссылка на документ этого не раскрывает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 12:48 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
Ты просто объясни своими словами это и закончим на этом. авторtwo or more sessions request the same information, the first session will read the data into the buffer cache while other sessions wait. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 12:53 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
sql+На русский не нужно переводить. Я просто хотел понять как ты понимаешь суть ожидания, чего именно ждут сессии. В данном твоя случае ссылка на документ этого не раскрывает. Ну свое понимание данного ожидания я раскрыл - добавить больше к процитированному ничего не имею. Ваше слово, товарищ маузер! (с) - что Вы подразумеваете под этим ожиданием? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 12:55 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
то же самое что в документации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 13:07 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
sql+то же самое что в документации. Ну хоть бы процитировал (а то я документацию не читаю ) и обсновал вот это свое глубокомысленное высказывание в мой адрес: sql+Подозреваю что ты неправильно понимаешь смысл данного события. -- BTW, для остальных, демка появления RbOS: Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 13:50 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
RA\/EN Ну хоть бы процитировал (а то я документацию не читаю ) и обсновал вот это свое глубокомысленное высказывание в мой адрес: sql+Подозреваю что ты неправильно понимаешь смысл данного события. Я написал "подозреваю, что непонимаешь", а не "уверен, что непонимаешь". А обосновать я не могу по причине твоего отказа прокомментировать. Я уже сказал, что квотирование документации нераскрывает твоего понимания. Хотя я без претензий, потому что что-то знать и уметь рассказать это что-то другому - суть разная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 14:22 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
sql+, достаточно будет мне добавить, что происходит вымывание из buffer cache наиболее часто востребованных блоков, что приводит к необходимости копирования их с диска в ОЗУ в рамках конкурирующих за данный блок процессов? Теперь от RAVEN'a ты отстанешь?...:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 16:29 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
Попрошайка sql+, достаточно будет мне добавить, что происходит вымывание из buffer cache наиболее часто востребованных блоков, что приводит к необходимости копирования их с диска в ОЗУ в рамках конкурирующих за данный блок процессов? Теперь от RAVEN'a ты отстанешь?...:) И что вариантов ДВА: 1. сделай так, чтобы блоки учавствующие в 'read by other session' сидели в кеше долго и с пользой, 2. сделай так, чтобы строчки в таких блоках ('read by other session') стали строчками дополнительных блоков, тем самым снимая нагрузку с "горячих" блоков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2008, 16:32 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
Попрошайка Попрошайка sql+, достаточно будет мне добавить, что происходит вымывание из buffer cache наиболее часто востребованных блоков, что приводит к необходимости копирования их с диска в ОЗУ в рамках конкурирующих за данный блок процессов? Теперь от RAVEN'a ты отстанешь?...:) И что вариантов ДВА: 1. сделай так, чтобы блоки учавствующие в 'read by other session' сидели в кеше долго и с пользой, 2. сделай так, чтобы строчки в таких блоках ('read by other session') стали строчками дополнительных блоков, тем самым снимая нагрузку с "горячих" блоков. вопрос: эти два варианта могут/должны быть реализованы на уровне приложения (если да, то как - не могу себе представить!) или Вы что-то другое имели в виду? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2008, 12:53 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
Дело в том, что одна сессия читает блок с диска и помещает его в buffer cache. Понятно, что Oracle использует принцип хранить в buffer cache одну копию текущего блока, который потом уедет на диск (всякие там клоны блоков не рассматриваем). Поэтому он блокирует все другие сесии на предмет копирования того же самого блока - иначе будет каша, да и с точки производительности это так же не правильно и не логично. Но почему другие сесии ждут этот блок? Напрашивается ответ: "Потому, что другая сессия читает уже его, ну так получилось, что процессор обработал быстрее..., как вариант". А почему она читает? Потому, что его нет в buffer cache его нет. Почему его там нет? Потому, что: 1. его там никогда не было, а тут появилась необходимость ему там быть, 2. его кто-то выдавил из buffer cache. Отсюда: 1. Пробуем понять по какой причине его там нет. Вдруг его кто-то вымывает из buffer cache, например другие не эффективные SQL. таким образом убрав причину исчезновения блока из buffer cache можно решить проблему с данным ожиданием. По пункту два можно сказать так. Если смотреть с другой стороны, то возникает и другой вопрос: "Почему один и тот же блок понадобился одновременно разным сессиям?". Напрашивается ответ: "В нем либо много строк, либо это блок индекса (нарастающая нумерация, например) и т.п.". Соответственно, если такой блок разрядить, то есть сократить в нем количество строк на два три и более блоков, то эффект hot можно с него снять. Для индексов, как правило используется прием reverse, для таблицы, как правило pctfree. Как бы так думаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2008, 13:27 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
ПопрошайкаДело в том, что ....... Вдруг его кто-то вымывает из buffer cache, например другие не эффективные SQL . таким образом убрав причину исчезновения блока из buffer cache можно решить проблему с данным ожиданием. ... Соответственно, если такой блок разрядить, то есть сократить в нем количество строк на два три и более блоков, то эффект hot можно с него снять . Для индексов, как правило используется прием reverse, для таблицы, как правило pctfree. Как бы так думаю. 1)Совсем необязательно, что неэффективные, могут и эффективные 2)Совсем необязательно, что данная проблема связана с горячими блоками. Если каждый блок запрашивается два раза в день одновременно несколькими сессиями , значит ли что он горячий? Нет. Но таких блоков запрашиваемых два раза на дню может быть мульон. В итоге статистика по данному ожиданию будет большая 3)Причина ожидания может быть очень простой - банально нехватает памяти - буферный кэш мал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2008, 14:04 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
sql+ ПопрошайкаДело в том, что ....... Вдруг его кто-то вымывает из buffer cache, например другие не эффективные SQL . таким образом убрав причину исчезновения блока из buffer cache можно решить проблему с данным ожиданием. ... Соответственно, если такой блок разрядить, то есть сократить в нем количество строк на два три и более блоков, то эффект hot можно с него снять . Для индексов, как правило используется прием reverse, для таблицы, как правило pctfree. Как бы так думаю. 1)Совсем необязательно, что неэффективные, могут и эффективные 2)Совсем необязательно, что данная проблема связана с горячими блоками. Если каждый блок запрашивается два раза в день одновременно несколькими сессиями , значит ли что он горячий? Нет. Но таких блоков запрашиваемых два раза на дню может быть мульон. В итоге статистика по данному ожиданию будет большая 3)Причина ожидания может быть очень простой - банально нехватает памяти - буферный кэш мал. А никто и не говорит, что все просто и все обязательно. Но когда блок одновременно запрашивается несколькими сессиями раз в три часа, то это НЕ есть проблема. Проблема - это когда она ухужшает производительность. В случае, который описываете вы, а именно якобы маленький buffer cache тождественно равно "блок вымывается" и никак не равен случаю, когда миллион разных блоков накручивают счетчик. Ради таких блоков (я бы их назвад множеством случайных блоков) никто и не собирался buffer cache раздвигать. Тут логичнее такие блоки расщепить. пусть они и Не горячие на столько, чтобы о них говорить, как о горячих. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2008, 14:14 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
Кстати, эффективность SQL ведь не только по отношению к ресурсам сервера определяется, но и по отношению к другим SQL. Как вы считаете? Ведь, если два SQL мешают друг другу, то необходимо выявить причину и устранить ее, тем самым устранить не эффективность одного из них или обоих одновременно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2008, 14:19 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
ПопрошайкаКстати, эффективность SQL ведь не только по отношению к ресурсам сервера определяется, но и по отношению к другим SQL. Как вы считаете? Ведь, если два SQL мешают друг другу, то необходимо выявить причину и устранить ее, тем самым устранить не эффективность одного из них или обоих одновременно! Примером может служить PQ, когда имеет место быть неравномерное наполнение в блоках определенных в рамках диапазонов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2008, 14:22 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
ПопрошайкаКстати, эффективность SQL ведь не только по отношению к ресурсам сервера определяется, но и по отношению к другим SQL. Как вы считаете? Ведь, если два SQL мешают друг другу, то необходимо выявить причину и устранить ее, тем самым устранить не эффективность одного из них или обоих одновременно! Я бы сказал не по отношению к другому SQL, а пот отношению к тому же SQL, но по другому написаному и оптимизированному в иной степени. Совсем необязательно, что это разные запросы. Этот может быть абсолютно тот же самый функционал и один и тот же запрос, причём идеально написанный и отлаженный. Просто двое или трое дядек в одном отделе, сидящие в одной комнате решили посмотреть один и тот же документ в своём корпоративном документообороте, что бы обсудить его. Вот вам и "buffer buzy waits(130)", он же "read by other session" в 10g. В совокопнусти с перегруженной дисковой системой и маленьким буферным кэшем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2008, 14:34 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
Хрен с ним, пусть будет, как будет. Как там с вопросом темы...:) "latch free в v$session_wait" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2008, 15:21 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
ПопрошайкаХрен с ним, пусть будет, как будет. Как там с вопросом темы...:) "latch free в v$session_wait" с большим интересом следил за развязанноой мною дискуссией, почерпнул много для себя полезного, всем огромное спасибо! Думаю, что стоит описать ситуевину, приведшую к проблемам (тут я думаю скорее всего был ближе к реальности sql+ в своем последнем посте). Нужно распределить вновь прибывшие записи из одной таблицы (TAB1, PK1, примерно 910000 записей) на N терминалов, чтобы те - случись что - могли работать и оффлайн дальше. Распределение происходит по определенным правилам, т.е. не все записи должны попасть на каждый терминал, но связь N:M.Решается это так (может не оптимально, прошу не бить сразу, но решение уже принято, запущено, уже так быстро не изменить): в промежуточную таблицу TAB2 пишутся после анализа кому какая запись принадлежит записи типа <TERM - номер терминала> <PK1 от таблицы TAB1>. Дальше есть процесс, распределяющий записи по терминалам, он делает SELECT ... FROM TAB1 JOIN TAB2 ON TAB1.PK1=TAB2.PK1 WHERE TAB1.TERM=NR1 и после успешной отсылки записей уничтожает свои (NR1) записи из TAB2, так что количество записей в ней всегда очень небольшое и этот SQL должен работать очень хорошо. Но не работает - см. топик! Наверно корень зла в том, что запускаются несколько ипостасей этого процесса (каждый обслуживает свою группу терминалов), запускаются они одновременно, просыпаются синхронно после паузы и одновременно пытаются поиметь одни и те же блоки из TAB1. Похоже на причину RbOS? Там еще кстати и таймоуты есть, т.е. бывает, что и не дожидается своего блока, так что ли? Что смущает, что это не основное время ожидания, db file scattered read гораздо больше. Обычно они связываются с full table scan, но когда я смотрю план, то никаких full table scan нет... Может это быть от сильной фрагментации таблицы TAB1? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2008, 16:41 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
Вы сделайте трассировку 10046 именно работы этих процессов, которые работают на терминалы. Можете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2008, 16:53 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
latch free ПопрошайкаХрен с ним, пусть будет, как будет. Как там с вопросом темы...:) "latch free в v$session_wait" Дальше есть процесс, распределяющий записи по терминалам, он делает SELECT ... FROM TAB1 JOIN TAB2 ON TAB1.PK1=TAB2.PK1 WHERE TAB1.TERM=NR1 и после успешной отсылки записей уничтожает свои (NR1) записи из TAB2, ... Похоже на причину RbOS? Там еще кстати и таймоуты есть, т.е. бывает, что и не дожидается своего блока, так что ли? ... Что смущает, что это не основное время ожидания, db file scattered read гораздо больше. Обычно они связываются с full table scan, но когда я смотрю план, то никаких full table scan нет... Может это быть от сильной фрагментации таблицы TAB1? 1. Процесс, я правльно понял, внешнее приложение? 2. Надо трейс одного "порбега" одного из процессов. ... 3. Похоже - не то слово Похоже, авторы задались целью украсить статспак своего приложения экзотический событием ожидания ... 4.... а также INDEX FAST FULL SCAN Приведите план запроса. P.S. Ну и трассу бы (не обработанную tkprof) не помешало бы приложить - однако она будет немного "кривой" - думаю, трассировка настолько тормознет трассируемый процесс, что он будет выполняться параллельно с остальными лишь небольшую часть времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2008, 17:30 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
Добавлю к RAVEN "2. Надо трейс одного "пробега" одного из процессов." ВО ВРЕМЯ РАБОТЫ ВСЕХ ОДНОВРЕМЕННО! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2008, 17:44 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
Я вот чего хочу спросить у автора - не знаю, может это к данной проблеме и не относится - а почему в самом первом посте у вас блоки по 16 считываются? у вас db_file_multiblock_read_count, или как он там, в 16 выставлен? может стоит поболее поставить, ну там 64, например. Понимаю, что данный параметр зависит от железа ввода/вывода, но обычно данный параметр при фулсканах помогает. хотя с конкуренцией за блоки он не помощник, конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2008, 21:10 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
СтивЯ вот чего хочу спросить у автора - не знаю, может это к данной проблеме и не относится - а почему в самом первом посте у вас блоки по 16 считываются? у вас db_file_multiblock_read_count, или как он там, в 16 выставлен? может стоит поболее поставить, ну там 64, например. Понимаю, что данный параметр зависит от железа ввода/вывода, но обычно данный параметр при фулсканах помогает. хотя с конкуренцией за блоки он не помощник, конечно. Кстати, db_file_multiblock_read_count=0 в 10ке автоматически регулирует этот параметр на основе своего интеллекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2008, 22:52 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
Уважаемые, а не подскажете как мне отследить время выполнения конкретного запроса для вывода индикации его исполнения (или в секундах, оставшихся до завершения или в %). Понимаю, что надо брать значения из V$SESSION_WAIT, но как мне узнать именно мой запрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2010, 10:47 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
FoxterУважаемые, а не подскажете как мне отследить время выполнения конкретного запроса для вывода индикации его исполнения (или в секундах, оставшихся до завершения или в %). Понимаю, что надо брать значения из V$SESSION_WAIT, но как мне узнать именно мой запрос? Никаких соображений нет? Ммм... жаль, то есть получается, что прогресс выполнения запроса вообще никак контролировать нельзя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2010, 14:02 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
Foxter, STFF прогресс выполнения запроса . Вкратце - рисуйте анимированное "Идёт работа, в Reset не тыкать!". :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2010, 14:27 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
Спасибо, видимо так и придется поступить :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2010, 10:05 |
|
||
|
что можно выудить из latch free в v$session_wait?
|
|||
|---|---|---|---|
|
#18+
Foxter, Дело конечно прошлое, но может это кому поможет. Есть такая вьюшка SQL> desc v$session_longops Name Null? Type ----------------------------------------- -------- ---------------------------- SID NUMBER SERIAL# NUMBER OPNAME VARCHAR2(64) TARGET VARCHAR2(64) TARGET_DESC VARCHAR2(32) SOFAR NUMBER TOTALWORK NUMBER UNITS VARCHAR2(32) START_TIME DATE LAST_UPDATE_TIME DATE TIMESTAMP DATE TIME_REMAINING NUMBER ELAPSED_SECONDS NUMBER CONTEXT NUMBER MESSAGE VARCHAR2(512) USERNAME VARCHAR2(30) SQL_ADDRESS RAW(8) SQL_HASH_VALUE NUMBER SQL_ID VARCHAR2(13) QCSID NUMBER Обычно её используют для оценки времени выполнения долгоиграющих вещей. Например завершения бакапа, или время завершения отката большой транзакции. Зная SQL_ID интересующего запроса можно узнать перспективы его завершения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2016, 12:53 |
|
||
|
|

start [/forum/topic.php?all=1&fid=52&tid=1886867]: |
0ms |
get settings: |
6ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
149ms |
get topic data: |
9ms |
get forum data: |
4ms |
get page messages: |
77ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 492ms |

| 0 / 0 |
