В сегодняшнем выпуске мы начнем рассматривать принципы работы нового механизма сбора статистических данных в версии 10G.
Сбор статистических данных о производительности БД всегда являлся важным этапом в процессе диагностики разрешения проблем производительности БД.
В ранних версиях (7,8 и 8i) распространенным способом сбора подобной информации была техника estat/bstat . В последующей версии (9i) эту функцию на себя взял пакет statspack.
Все перечисленные подходы используют похожий принцип сбора информации.
В определённый момент статистические данные о производительности БД (например время потраченное на запросы CPU ) записываются в специальные предназначенные таблицы. Эта запись объединяется в логическую копию (snapshot). Для того , чтобы понять действительную картину работы базы, сессии или определенного запроса нужно сравнить две копии статистических данных. Например в полдень была зафиксирована статистика использования database buffer gets' в 1500 , а через два часа этот же параметр был записан в следующую копию с результатом 2000. Сравнивая обе копии , а точнее нахождение разницы между значениями статистик получаем показатель использования ресурсов в определённый промежуток времени.
Важно подчеркнуть , что сама по себе статистическая копия не имеет значения в процессе оптимизации - важен результат разницы статистических значений двух копий.
В версии 10G Oracle вводит новый механизм сбора важной информации о производительности базы данных.
Этот механизм именуется AWR (Автоматический репозиторий рабочей нагрузки) и основывается на похожих принципах сбора статистической информации в копии , как statspack и estat/bstat. Разница заключается в приёмах и методологии сбора информации , а также в количестве дополнительной информации.
Желаю подчеркнуть , что возможность работать с пакетом statspack осталась в версии 10G , отчёт statspack отличается в 10G от 9i новыми видами статистик о более подробной информацией.
Схема работы AWR :
Периодически AWR создает статистическую копию и сохраняет информацию в таблицах расположенных в табличном пространстве SYSAUX. По умолчанию регулярный период сбора установлен на 60 минут. Это значение может быть уменьшено до 10 минут при желании.
Механизм сбора статистической копии (awr snapshot) установлен в базе данных 10G по умолчанию и в отличии от пакета statspack установки на автоматический сбор информации не требуется.
Для исполнения функции сбора введён новый фоновый процесс (MMON).
За сбор информации для статистической копии отвечает подчинённый процесс (slave process) M001.
В виду того , что MMON является фоновым процессом влияние на производительность системы во время сбора информации сведено к минимуму путём доступа к структурам памяти (SGA) на прямую , минуя уровень SQL запросов.
AWR сохраняет историю статистических данных в течении 7 дней по умолчанию.
Виды статистических данных в репозитории:
1) Накопительная или статистика типа счетчик (counter) - значение статистики монотонно увеличивается со течением времени, требуется два значения в начальный и конечный момент времени для того , чтобы определить значение статистики определённого временного промежутка.
2) Статистика значения (value) - этот тип определят определённое значение в данный момент времени, например общее количество выделенного ресурса памяти процессу.
3) Статистики времени (time) - например DB CPU
Метрики (показатели) - статистика , которая определяет изменения отношений или пропорций (ratio) определённых статистических данных с течением времени , например количество buffer gets за минуту времени
Можно разделить статистические данные собираемые AWR на следующие классы:
1) События ожидания (wait event) - ситуация при которой сессия ожидает завершения определённого события , например завершения запроса на диск (I/O request).
2) Распределение рабочего времени (time model statistics ) - в то время , как статистки класса ожидания описывают ,где происходили главные простои нашей системы , статистки класса распределения рабочего времени описывают на что было потрачено время во время работы , например сколько времени ушло на синтаксический анализ.
Пользование AWR :
В отличие от механизма statspack при использовании AWR нет надобности настраивать автоматический механизм сбора копий (snapshots). Эта функция работает по умолчанию в любой базе 10-ой версии. Пользователю остается лишь получить отчёт ,который основывается на выбранных копиях. Для получения отчёта нужно запустить SQL скрипт $ORACLE_HOME/rdbms/admin/awrrpt.sql
Есть возможность получит окончательный отчет как в текстовом варианте , так и в варианте HTML.
Интересное отличие от statspack заключается в том , что в простом отчёте AWR текст SQL команд представлен полностью , а не частично как это было раньше.
Также можно использовать $ORACLE_HOME/rdbms/admin/awrsqrpt.sql для получения детального отчёта по определённому SQL.
В наших дальнейших выпусках мы продолжим рассматривать затронутую тему и попытаемся ответить на вопрос , как же в точности собираются статистические данные, что собирается путём прямых SQL запросов , а что путём прямого доступа к памяти.