разделяемого сервера но область времени выполнения, используемая
операторами SQL располагается в PGA.
Например, пользовательский процесс может иметь некоторые курсоры
(дескрипторы областей памяти, где вы храните значения переменных),
ассоциированные с ним. Поскольку это пользовательские курсоры, они не
разделяются автоматически с другими пользователями и потому PGA –
подходящее место для хранения этих частных значений. Другое основное
использование PGA ориентировано на выполнение требовательных к памяти
операций SQL, которые включают сортировку, таких как запросов с конструкцией
ORDER BY или GROUP BY. Таким операциям нужна некоторая рабочая область,
и PGA обеспечивает эту область памяти.
Память PGA относится к следующим двум типам:
Частная область SQL. Эта область памяти содержит информацию о привязке
переменный SQL и структуры памяти времени выполнения. Каждый сеанс,
выполняющий оператор SQL, получает свою собственную частную область SQL.
Область времени выполнения. Область времени выполнения создается для
пользовательского сеанса, когда тот выдает оператор SELECT, INSERT, UPDATE
или DELETE. После запуска оператора SELECT, INSERT, UPDATE или DELETE
либо после извлечения результатов оператора SELECT область времени
выполнения освобождается Oracle.
Если пользовательский сеанс использует сложные соединения или интенсивную
сортировку (группировку и упорядочивание), то сеанс использует область времени
выполнения для выполнения таких ресурсоемких по памяти операций.
Чтобы сократить время реакции, все сортировки, выполняемые в PGA, должны
полностью проходить в кэше рабочей области. Это называется операцией
оптимального режима (optimal mode operation), поскольку вся работа выполняется
в памяти, без дискового ввода-вывода. Если сортировка требует обращения к
диску, поскольку области памяти для нее недостаточно, это сильно замедляет
операцию сортировки. Операция SQL, которая вынуждена обращаться к дисковой
памяти даже в ограниченной степени – однопроходная операция – происходит
медленнее, чем операция, полностью выполняемая в области памяти. Однако
если ваша область памяти времени выполнения слишком мала по сравнению с
потребностями операции сортировки. Oracle приходится осуществлять несколько
проходов по сортируемым данным, что очень нагружает диск и значительно
увеличивает время реакции для пользователя. Таким образом, существует
прямая зависимость между размером PGA и производительность запросов.
Вы можете настраивать размеры этих частных рабочих областей, но это подход
«наудачу», который требует учета множества сложных конфигурационных
параметров Oracle, касающихся рабочих областей памяти. К параметрам, которые
нужно устанавливать вручную, относятся SORT_AREA_SIZE, HASH_AREA_SIZE и
BITMAP_AREA_SIZE.
Сумма всей памяти PGA, используемой всеми сеансами, составляет объем PGA,
используемый экземпляром. Oracle рекомендует применять автоматическое
управление PGA, которое автоматизирует выделение памяти PGA. Это помогает
более эффективно использовать память, выделенную базе данных. Это средство
ведет себя особенно хорошо при высокой рабочей нагрузке, потому что
динамически исправляет границы доступной памяти и постоянно отслеживает
ситуацию. Ручное управление PGA может привести либо к слишком малому, либо
к чересчур большому выделению памяти, что чревато проблемами
производительности.
Вы автоматизируете выделение памяти PGA, устанавливая параметр
инициализации WORKAREA_SIZE_POLICY в его значение по умолчанию – auto.
Если вы установите значение этого параметра в manual, то должны будете
специфицировать все параметры рабочей области PGA, упомянутые выше.
Параметр WORKAREA_SIZE_POLICY гарантирует автоматизацию памяти PGA.
Однако вы должны также установить размер общей выделенной памяти PGA,
указав значение инициализационного параметра PGA_AGGREGATE_TARGET.
Например, если вы установите в файле параметров инициализации
PGA_AGGREGATE_TARGET=5000000000, то Oracle использует 5 Гбайт
выделенной памяти PGA в качестве глобальной установки для экземпляра. Oracle
будет удерживать общий объем памяти PGA, используемой всеми серверными
процессами экземпляра, в пределах этой величины.
Если вы не установите параметр PGA_AGGREGATE_TARGET, то должны будете
использовать ручной режим управления рабочими областями. В качестве
альтернативы можно активизировать ручной режим, установив параметр
WORKAREA_SIZE_POLICY в manual. Oracle настоятельно рекомендует применять
автоматическое управление PGA, поэтому что оно позволяет более эффективно
использовать память. Для пользователей это означает более высокую
производительность и сокращение времени выполнения запросов в целом.
Когда вы используете автоматическое управление памятью PGA, установив
параметр PGA_AGGREGATE_TARGET. Oracle старается выделить достаточно
памяти всем рабочим областям в оптимальной манере, выполняя все
требовательные по памяти операции SQL в памяти кэша. В Худшем случае
некоторые рабочие области используют дисковое пространство во
однопроходном режиме. Однако если вы устанавливаете слишком малое
значение параметра PGA_AGGREGATE_TARGET относительно рабочей области,
необходимой вашему экземпляру, то Oracle начинает многопроходное
выполнение операций SQL с интенсивной сортировкой или хешированием, что
влечет за собой катастрофические последствия для производительности
экземпляра.
В режиме ручного управления вся память PGA, которая не была использована,
автоматически возвращается системе. Каждому сеансу, подключаемому к базе
данных, выделяется определенный объем памяти PGA, который удерживается до
завершения сеанса, независимо от того, выполняются в нем операторы SQL или
нет. При автоматическом управлении PGA сервер Oracle возвращает всю
неиспользуемую память PGA операционной системы. В загруженной среде это
приводит к огромной разнице в производительности базы данных и системы.
Предположим, что вы установили параметр PGA_AGGREGATE_TARGET в 5
Гбайт. Oracle не станет немедленно захватывать 5 Гбайт памяти при запуске
экземпляра, как это происходит с параметром SGA_TARGET. Он заимствует
память у операционной системы по мере необходимости, до достижения лимита в
5 Гбайт. Как только сеанс освободит выделенную ему область памяти, эта память
немедленно возвращается операционной системе.
Do'stlaringiz bilan baham: |