Измерение производительности экземпляра Oracle - Статданные по событиям ожидания - измеряем производительность экземпляра Oracle

Как измерить производительность базы данных Oracle?
Антон Меринов

Антон Меринов

Автор статьи. Интересы, навыки: Профессиональное администрирование СУБД Oracle Database, веб-разработка, IT-World. Подробнее.

 
 
 
« Prev
Next »

Статистические данные по событиям ожидания

Когда пользователи жалуются, что база данных работает медленно и им не удается получать ответы на свои запросы достаточно быстро, нет никакого смысла протестовать и заявлять о том, что коэффициенты попаданий на уровне разделяемого пула и кэша буферов (а также большого пула и буфера журналов повторного выполнения) в базе данных выглядят прекрасно. Если пользователям приходится долго ждать завершения выполнения их заданий, значит, время отклика является медленным, и утверждать, что база данных работает хорошо, нельзя, хотя показатели по коэффициентам попаданий и высоки.


На заметку! О подходе к анализу событий ожидания Oracle (интерфейсе событий ожидания) очень интересно рассказано в одном из ранних посвященной этой теме документов под названием Yet Another Performance Profiling Method (or YAPP-Method) (Еше один интересный метод профилирования), написанном Анжо Колком (Anjo Kolk), Шари Ямагучи (Shari Yamaguchi) и Джимом Вискучи (Jim Viscusi) и доступном на веб-сайте OraPerf по адресу http://www.oraperf.com (для входа на сайт понадобится пройти бесплатную регистрацию).


После начала выполнения SQL-оператора процессу Oracle не всегда удается работать над его выполнением безо всяких прерываний. Зачастую ему приходится приостанавливаться или ожидать освобождения какого-нибудь ресурса, прежде чем продолжать выполнение. Следовательно, в любой заданный момент времени процесс Oracle может делать следующее:

  • выполнять SQL-оператор;
  • ожидать чего-нибудь (например, ресурса типа буфера базы данных или защелки либо какого-то действия вроде завершения выполнения операции записи данных в кэш буферов).

Поэтому время отклика — общее время, которое уходит у Oracle на выполнение работы — правильно вычисляется так: 

response time = service time + wait time
время отклика = время обслуживания + время ожидания

При выяснении, сколько всего времени ушло на осуществление транзакции, может оказаться, что только часть этого времени была потрачена сервером Oracle на фактическую работу. Остальную часть времени сервер мог просто ожидать освобождения какого-то ресурса или получения запроса на выполнение какого-нибудь действия. Таким занятым ресурсом может быть медленно работающий процесс записи в журналы или процесс записи в базу данных. Кроме того, причиной возникновения событий ожидания могут быть недоступные буферы или защелки. События ожидания, отображающиеся в представлении V$SYSTEM_EVENT (ожидания на уровне экземпляра) и представлении V$SESSION_EVENT (ожидания на уровне сеансов) показывают, из-за чего возникало время ожидания (полного сканирования таблиц, большого количества защелок в библиотечном кэше и т.д.). Помимо того, из-за чего возникало время ожидания в базе данных, они еще сообщают информацию об узких местах в сети и приложении.


На заметку! Важно понимать, что события ожидания являются лишь симптомами проблем, по большей части тех, которые находятся внутри кода приложения. События ожидания показывают, что тормозит производительность, но не то, почему события ожидания возникают в большом количестве. Администратор баз данных должен самостоятельно изучать SQL-код и выяснять настоящую причину проблем с производительностью.


Информация о событиях ожидания содержится в четырех следующих динамических представлениях производительности: V$SESSION, V$SYSTEM_EVENT, V$SESSION_EVENT и V$SESSION_WAIT. В этих четырех представлениях перечислены практически все события, которые экземпляру приходилось ожидать, и насколько долго. Понимание этих событий ожидания является существенно важным при устранении проблем с производительностью. Поэтому в последующих разделах наиболее типичные события ожидания рассматриваются более подробно. Следует иметь в виду, что в четырех указанных представлениях отображается похожая информация, но акцент делается на разных аспектах базы данных, как можно будет увидеть дальше. Больше всего пользы события ожидания приносят при включении функции сбора для них статистических данных по времени. В противном случае отображается только количество раз, которое они возникали, но не время, которое они занимали. Не видя, сколько времени занимали события, невозможно сказать, на самом деле ли они послужили причиной замедления работы системы.


Совет. Представления с событиями ожидания (интерфейс событий ожидания) удобно использовать для изучения текущих и недавних проблем с производительностью в экземпляре. Для проведения более глубокого анализа большинства связанных с производительностью проблем необходимо применять инструмент ADDM, который анализирует ежечасные снимки AWR.


Анализу интерфейса событий ожидания Oracle в последние годы было уделено довольно много внимания. По событиям Oracle написаны целые книги. Поэтому в этой статье будет рассказываться только о наиболее важной части процесса анализа ожиданий в Oracle, а именно — о той, что касается производительности (в разделе “Анализ производительности экземпляра”). В идеале все сеансы должны получать ресурсы ЦП и не тратить время на ожидание ресурсов наподобие ресурсов подсистемы ввода-вывода. Следует, однако, иметь в виду, что в каждом работающем экземпляре все равно будут происходить ожидания какого-нибудь рода. Нереально рассчитывать, что система будет работать с практически нулевым временем ожидания. Главным вопросом должно быть не то, возникают ли в Oracle события ожидания, а то, не возникает ли в Oracle чрезмерное количество таких событий.

 

« Prev
Next »
Войдите чтобы комментировать

dbstalker аватар
dbstalker ответил в теме #10398 2 года 2 мес. назад
Мега Мануал. Большая благодарность!)
apv аватар
apv ответил в теме #10024 2 года 9 мес. назад
Просто гениальная статья, Антон! Огромное спасибо за усилия!
Oracle_Admin аватар
Oracle_Admin ответил в теме #9852 3 года 1 мес. назад

well пишет: Часто обращаюсь к данной стать при настройке производительности экземпляра БД Оракл. Спасибо, что сделали форматирование кода визуально более удобочитаемым!


Рад, что материал востребован. Стараюсь поддерживать в актуальном состоянии!
well аватар
well ответил в теме #9848 3 года 1 мес. назад
Часто обращаюсь к данной стать при настройке производительности экземпляра БД Оракл. Спасибо, что сделали форматирование кода визуально более удобочитаемым!