|
|
|
что можно выудить из 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?fid=52&msg=35473516&tid=1886867]: |
0ms |
get settings: |
6ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
153ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 458ms |

| 0 / 0 |
