PGA_AGGREGATE_LIMIT
PGA_AGGREGATE_LIMIT — это параметр конфигурации базы данных Oracle, который устанавливает максимальный общий объем оперативной памяти (Program Global Area, PGA), доступной для всех серверных процессов, обслуживающих экземпляр базы данных. Параметр используется для управления потреблением памяти в автоматическом режиме управления памятью PGA (Automatic PGA Memory Management) и предотвращает чрезмерное использование оперативной памяти, которое может привести к нехватке ресурсов на сервере.
Назначение и принцип работы
PGA (Program Global Area) — это область памяти, выделяемая для каждого серверного процесса Oracle. Она содержит данные, необходимые для выполнения конкретного запроса или сессии, такие как буферы сортировки, хэш-таблицы, битовые карты индексов и временные сегменты. В отличие от SGA (System Global Area), которая является общей для всех процессов, PGA является частной для каждого процесса.
Параметр PGA_AGGREGATE_LIMIT был введен в Oracle Database 11g Release 2 (11.2) как дополнительный механизм защиты. Он задает жесткий лимит на совокупный объем памяти PGA, который не может быть превышен ни при каких обстоятельствах. Если суммарное потребление PGA всеми процессами достигает этого предела, Oracle начинает принудительно завершать или приостанавливать наиболее ресурсоемкие операции (например, сортировки или хэш-соединения), чтобы освободить память.
Отличие от PGA_AGGREGATE_TARGET
Важно различать два связанных параметра:
- PGA_AGGREGATE_TARGET — это целевой объем памяти PGA, который Oracle стремится поддерживать. Он является мягким лимитом: при наличии свободной памяти процессы могут использовать больше, чем указано в этом параметре, но при нехватке ресурсов Oracle будет пытаться сократить потребление до этого значения. Параметр управляет автоматическим распределением памяти между процессами.
- PGA_AGGREGATE_LIMIT — это жесткий лимит. Если потребление PGA превышает это значение, Oracle принимает принудительные меры, вплоть до завершения процессов. По умолчанию значение PGA_AGGREGATE_LIMIT устанавливается как большее из двух чисел: 2 ГБ или 200% от PGA_AGGREGATE_TARGET, но не более 120% от физической памяти сервера (если используется автоматическое управление памятью).
Поведение при превышении лимита
Когда совокупное потребление PGA достигает значения PGA_AGGREGATE_LIMIT, Oracle выполняет следующие действия:
- Сокращение выделения памяти для новых операций, требующих PGA (например, сортировок и хэш-соединений). Вместо использования оперативной памяти Oracle может переключиться на использование временных табличных пространств на диске, что значительно замедляет выполнение запросов.
- Принудительное завершение наиболее ресурсоемких операций в порядке убывания потребления памяти. Это может привести к ошибкам выполнения запросов, таким как ORA-04036: PGA memory used by the instance exceeds PGA_AGGREGATE_LIMIT.
- Завершение сессий, которые потребляют наибольшее количество памяти PGA, если сокращение операций не помогает.
Настройка параметра
Значение PGA_AGGREGATE_LIMIT задается в байтах, килобайтах (K), мегабайтах (M) или гигабайтах (G). Например:
``sql ALTER SYSTEM SET PGA_AGGREGATE_LIMIT = 4G; ``
Параметр является динамическим, то есть его можно изменять без перезапуска базы данных. Однако для вступления изменений в силу может потребоваться некоторое время, так как Oracle не сразу пересчитывает лимиты для активных процессов.
Рекомендуется устанавливать значение PGA_AGGREGATE_LIMIT с учетом общего объема оперативной памяти сервера, выделенной для экземпляра Oracle, а также потребностей других приложений. Слишком низкое значение может привести к частым ошибкам и снижению производительности, а слишком высокое — к нехватке памяти для других процессов операционной системы.
Мониторинг и диагностика
Для контроля использования PGA администраторы баз данных могут использовать следующие представления и утилиты:
- V$PGASTAT — содержит статистику по использованию PGA, включая текущее потребление, количество операций, выполненных в памяти и на диске, а также количество превышений лимита.
- V$PROCESS — показывает потребление PGA для каждого процесса Oracle.
- V$SQL_WORKAREA — отображает информацию о рабочих областях (work areas) для каждого SQL-оператора, включая используемый объем памяти.
- Enterprise Manager — графический интерфейс для мониторинга и настройки памяти.
Влияние на производительность
Правильная настройка PGA_AGGREGATE_LIMIT критична для производительности базы данных. Если лимит установлен слишком низко, Oracle будет часто принудительно завершать операции, что приведет к росту числа ошибок и увеличению времени выполнения запросов из-за использования дисковых операций. Если лимит слишком высок, процессы могут потребить всю доступную память, что вызовет нехватку памяти для других компонентов базы данных (например, SGA) или операционной системы, что может привести к свопингу (использованию диска в качестве виртуальной памяти) и общему снижению производительности сервера.
Рекомендации по установке
Для большинства систем рекомендуется устанавливать PGA_AGGREGATE_LIMIT равным 120–150% от PGA_AGGREGATE_TARGET, но не более 90% от общего объема оперативной памяти сервера, выделенной для Oracle. Если на сервере работают другие приложения, необходимо учитывать их потребности в памяти. В средах с высокой конкуренцией за ресурсы (например, в облачных или виртуализированных средах) может потребоваться более консервативная настройка.
Примечания
- Параметр PGA_AGGREGATE_LIMIT не поддерживается в версиях Oracle Database до 11g Release 2.
- В Oracle Database 12c и новее параметр может быть автоматически настроен, если используется автоматическое управление памятью (Automatic Memory Management, AMM).
- При использовании пула соединений (например, Database Resident Connection Pooling) потребление PGA может быть более предсказуемым, что упрощает настройку лимита.
Источники
- Oracle Database Administrator's Guide, 11g Release 2 (11.2)
- Oracle Database Performance Tuning Guide, 12c Release 1 (12.1)
- Документация Oracle: "Managing PGA Memory"
- Статья "Understanding PGA_AGGREGATE_LIMIT" на сайте Oracle Support
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →