| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Oracle > Падение производительности |
| Автор: setnull 23.6.2009, 12:14 |
| Все здравствуйте!!! Есть запрос на выборку данных. При этом параллельно производится (не интенсивное, но постоянное) внесение новых данных. Время от времени (причем промежутки никак не нормированы) выполнение этого запросы происходит очень долго и ресурсоемко. Остальное время с ним нет никаких проблем.... С чем это может быть связано? Вот додумался засечь используемый план... Может быть, что это происходит пересчет плана или оптимизации (я в этом просто практически ничего не понимаю, если не считать наличие какого-то абстарактног представления)? Может это также быть следствием того, что все запросы идут по соединениям одинакового типа. Я имею виду, есть ли в Оракл возможность производить различные типы запросов (чтение/запись), используя рзличные типы соединений (по уровню изоляции/способу доступа)? И может ли это поспособствовать разоешение исходной проблемы? Спасибо!!! |
| Автор: Zloxa 23.6.2009, 13:45 |
| Это http://forum.vingrad.ru/forum/topic-263512.html начинает периодически тормозить? План запроса при торможении и при нормальной работе одинаков? Как гипотеза - у тебя может периодически обрабатывать http://download.oracle.com/docs/cd/B19306_01/server.102/b14211/stats.htm#i41282. После того как статистика по объекту изменяется, сбрасываются все планы запросов, в которых использовался этот объект, при первом выполнении запроса, планы строятся заново. При этом, если при первом выполнении запрос использует не типичные значения в бинде(например значение с высокой http://download.oracle.com/docs/cd/B19306_01/server.102/b14211/optimops.htm#i55109, в то время как обычно используется значение с низкой селективностью), в результате http://download.oracle.com/docs/cd/B19306_01/server.102/b14211/optimops.htm#sthref944 план может оказаться не эффективным для типичных значений биндов. Этот план закрепится и будет использован для последующих вызовов и на типичных вызовах проявятся тормоза. Но эта гипотиреоза из разряда "пальцем в небо". Такая штука встречается весьма редко. Может у тебя все проще - касперксий каконить делает плановое сканирование в "периоды торможениия" |
| Автор: setnull 23.6.2009, 14:34 | ||||
| Ага это этот запрос.... Да, я тоже об этом думал, и это очень на это похоже (что перестраивается план)
Запроса ведет себя наоборот: примерно раз в час-два тормозит (единично). Как только тормознутый запрос выполняется - далее повторные запросы выполняются быстро (До следующего "чекпоинта")... Т.е. на перестройку очень похоже...
Врядли.... часто делаешь запрос и, очевидно, в этот же момент набухает проц. Далле по сценарию. Плюс, параллельно с тормозящим запросом, другие отрабатыаются нормально.... Но! Неужели отстройка плана может осуществляться до 2 минут???????? И это при отм, что обновлятся он после добавления 20 - 30 записей? GATHER_STATS_JOB - У меня Enabled = true Это он пересчитывает статистику, или пеестраивает планы? (Прошу прощения, все никак руки не дойдут до статистики)... Каксательно запроса. После тормозов план и окружение оптимизации у него не меняется. Но меняется (что бросилось в глаза) CHILD_ADDRESS (все же что это такое) и CONCURRENCY_WAIT_TIME (опять кошусь в сторону уровней изоляции запрососв. В Оракле это есть?) |
| Автор: ToshaCh 23.6.2009, 14:40 |
| Хм. А загрузка данных идёт через одну сессию или через несколько? И есть ли там update или только insert. Может элементарная блокировка на запись вызывает лавину сессий? Думаю что чем годать на гуще лучше awr репорт изучить для этого времени. |
| Автор: setnull 23.6.2009, 15:59 | ||
| Не не, тормозят именно селекты.... Да, и окешировании я думал, только забыл спросить, есть ли такое..... а как это можно выяснить? Добавлено через 3 минуты и 2 секунды
Все идет через различные сессии.......... |
| Автор: Zloxa 23.6.2009, 16:35 |
есть http://download.oracle.com/docs/cd/B19306_01/server.102/b14220/glossary.htm#sthref4117 Можно оценить что нам даст его увеличение/уменьшение http://download.oracle.com/docs/cd/B19306_01/server.102/b14211/memory.htm#sthref368 Можно посмотреть под что у нас он занят http://download.oracle.com/docs/cd/B19306_01/server.102/b14211/memory.htm#i44438 Только что это нам дает? Не будешь же ты кэш увеличивать пропорционально росту количества данных в твоей таблице. Однако от чего последующие запросы не тормозят, это знание может таки дать объяснение Попробуй на тестовом окружении http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_2013.htm#sthref4644 кэшбуфер. Глянуть не проявится ли симптоматика в этом случае. |
| Автор: ToshaCh 23.6.2009, 17:28 |
| setnull, Ты вроде, как-то спрашивал как настроить EM. Он там у тебя есть? Если да то пройдись по адвизорам: Зайди на страничку perfomance и запусти оттуда awr репорт для того момента времени когда база тормозила. А потом с той же странички попади в ADDM он более нагляден и даже даст тебе советы. З.Ы. Всё это можно сделать и без EM, но объяснять дольше. |