Вход |  Регистрация

Все Тэги

Мониторинг ресурсов баз данных (БД)

17.01.2013733 просм.

Большинство современных приложений работают на основе многоуровневой архитектуры, где их функционал распределен по разным уровням, и, как правило, выполняется на своем различных серверах. Обычно существуют следующие уровни:

  • Пользовательский интерфейс (User Interface). Обеспечивает связь между пользователем и приложением.
  • Бизнес-логика (Business Layer). Связан со всеми бизнес-нормами и правилами, необходимыми для работы приложения.
  • Уровень хранения и обработки данных (Data layer). Оперирует данными, необходимыми для бизнес-транзакций.

Такая структура обеспечивает ряд важных преимуществ, таких как: относительно тонкий клиент (клиентское ПО), развертывание только серверной части, разделение функционала, отсутствие прямого доступа к базе данных. В результате уменьшаются затраты на разработку и владение приложением.

В приложениях с многозвенной архитектурой, проблемы с производительностью могут возникнуть на любом из его уровней. Интересно, что базы данных являются одним из «популярных» мест для проблем с производительностью.

В базах данных все время что-то меняется: сами данные, запросы к ним или какая-нибудь логика их обработки. Это означает, что поддержание высокой производительности баз данных – задача постоянная.
Есть множество факторов, которые влияют на скорость работы приложения с базами данных.

Например:

  • Неоптимальный дизайн таблицы в базе данных
  • Плохая индексация
  • Неправильное партицирование таблиц
  • Неоптимальные запросы
  • Неоптимальная конфигурация СХД
  • Размещение БД на серверах, обслуживающих несколько приложений.

Мониторинг Oracle

Обзор

База данных Oracle – это реляционная система управления базами данных (RDBMS, relational database management system), разработанная одноименной компанией Oracle. Ее богатый функционал обеспечивает высокую доступность, масштабируемость, производительность, управляемость и безопасность. Эти достоинства делают Oracle RDBMS корпоративного класса и одним из лидеров в этой области.

БД Oracle предоставляет всестороннюю поддержку разработки приложений с помощью разных возможностей и функций. Она также предлагает различные методы доступа к данным для Java и .NET.

Существует несколько версий Oracle, каждая их которых предназначена для разного уровня использования:

  • Стандартная версия (Standard Edition, SE). Содержит базовые функции БД. В основном она рассчитана на серверы с 1-4 CPU. Если же количество CPU превышает 4, то пользователю придется перейти на Корпоративную версию. В SE нет ограничений памяти, а также могут использоваться кластеры с помощью Oracle RAC.
  • Корпоративная версия (Enterprise Edition, EE). Расширяет возможности Стандартной версии, особенно в области производительности и безопасности. Она рассчитана на серверы с количеством CPU 4 и выше. В этой версии нет ограничений памяти и можно использовать кластеры с помощью ПО Oracle RAC.
  • Стандартная версия один (Standard Edition One). Эта версия появилась в Oracle 10g, и имеет некоторые функциональные ограничения по сравнению со Стандартной версией. Ориентирована на использование системами с 1-2 CPU. Не имеет ограничений памяти.
  • Экспресс версия (Express Edition или Oracle Database XE). Доступна начиная с 2005 года, бесплатная для платформ Windows и Linux. Эта версия имеет несколько ограничений: 150 МB для клиентских «следов» (footprint), использование только одним CPU и максимум – 4 GB данных пользователя. Несмотря на то, что эта версия может быть установлена на сервере с любым количеством памяти, использовать она может лишь 1 GB.
  • Облегченная БД Oracle (Oracle Database Lite). Предназначена для работы на мобильных устройствах. Эта база данных, частично размещенная на мобильном устройстве, может быть синхронизирована с БД на сервере.

Общеизвестно, что слой БД имеет огромное влияние на производительность приложений. Компания Oracle является одним из ключевых игроков этой области, поэтому целесообразно ознакомиться с их средой с точки зрения производительности. В нашей заметке пойдет речь об архитектуре Oracle и возможностях ее мониторинга. Мы также расскажем о самых важных счетчиках мониторинга и практике их использования.

Архитектура

Oracle состоит из экземпляра базы данных и хранилища данных. Экземпляр БД – это набор процессов ОС и структур памяти, которые взаимодействуют с хранилищем. Структура памяти называется Глобальной Областью Системы – System Global Area (SGA). Данные логически хранятся в виде табличных пространств (tablespace), а физически как файлы данных. Табличные пространства могут содержать различные типы сегментов памяти. Сегменты, в свою очередь, состоят из одного и более экстентов. Экстенты содержат группы последовательных блоков данных. Ну а блоки данных являются базовыми единицами хранения. На физическом уровне, файлы данных содержат один и более блоков данных, размер которых может варьироваться.

Система управления БД Oracle отслеживает хранение данных на компьютере с помощью информации, хранящейся в табличном пространстве SYSTEM. SYSTEM содержит справочник данных и часто (по умолчанию) индексирует и кластеризует. Этот справочник состоит из специального набора таблиц, которые содержат информацию про все пользовательские объекты в базе данных.

Следующая диаграмма иллюстрирует архитектуру БД Oracle. Она отображает разные структуры памяти на уровне экземпляра БД (instance), а также файлы данных на уровне хранилища данных.

Каждый экземпляр БД использует Системную Глобальную Область (System Global Area, SGA), которая является общей областью памяти, для того, чтобы записывать данные и контролировать информацию. Экземпляр БД сам себе выделяет SGA при запуске и освобождает память при выключении. Информация в SGA состоит из следующих элементов, каждый из которых имеет свой размер, зафиксированный при запуске экземпляра БД:

  • Буферный кэш (Buffer cache). В нем хранятся блоки данных, которые недавно использовались. Это помогает Oracle сократить операции ввода/вывода и повысить производительность, так как новые запросы одних и тех же данных обслуживаются из буферного кэша, сокращая количество запросов к диску.
  • Буфер журнала изменений (Redo log buffer). Хранит записи изменений, производимых в БД. В случае сбоя системы это поможет восстановить экземпляр базы.
  • Разделяемый пул (Shared pool). Хранит используемые всеми процессами структуры памяти, такие как общие области SQL в кэш библиотеке (Library cache) и внутреннюю информацию в справочнике данных. При выделении недостаточного объема памяти могут возникнуть проблемы с производительностью.
    • Кэш библиотеки (Library cache). Хранит общие области SQL, кэшируя дерево структурного анализа и план выполнения каждого уникального оператора SQL. Это позволяет сократить требуемый объем памяти и время на структурный анализ и планирование выполнения.
    • Кэш справочника данных (Data Dictionary cache). Хранит пользовательскую информацию, привилегии, названия таблиц, типы данных, и так далее. Справочники данных помогают провести структурный анализ операторов SQL. «Узкие места» производительности справочника данных влияют на всех пользователей БД Oracle.

Программная Глобальная Область (Program Global Area, PGA) – это серверный процесс обслуживающий пользовательские процессы на стороне клиента. Область памяти PGA содержит данные и управляющую информацию серверных процессов Oracle. PGA хранит информацию о пользовательских сессиях, переменных сессии, сортировки, связанные переменные и т.д.

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

  • Процесс записи в БД (DBWR). Отвечает за запись данных на диске.
  • Процесс записи логов (LGWR). Отвечает за запись данных в логи.
  • Процесс мониторинга системы (SMON). Отвечает за восстановление экземпляра БД, освобождение временных сегментов и объединение свободных областей.
  • Монитор процессов (PMON). Отвечает за очистку умерших и зависших процессов.
  • Процесс контроля (CKPT). Отвечает за предупреждение других процессов о контрольных точках и обновление релевантных файлов.

Пул Java используется лишь тогда, когда код Java применяется на уровне экземпляра базы, а Большой пул (Large Pool) не является обязательным. Если Большой пул все же задействован, он облегчает нагрузку на разделяемый пул.

Архитектура Oracle призвана обеспечить оптимальную производительность достижимую с помощью сведения к минимуму операций ввода/вывода. Мониторинг производительности и тюнинг должны показать, насколько задействованы все возможности в каждом конкретном случае.

Метки: , ,

Добавить комментарий

Для отправки комментария вам необходимо авторизоваться.

Партнеры DevOpsHub и DevOpsWiki