PGA

PGA - это область памяти выделенного серверного процесса. Другие процессы не имеют доступа к ней.

Схема PGA Oracle

Программная глобальная область (Program Global Area - PGA)

Программная глобальная область или глобальная область процесса (PGA) содержит данные и управляющую информацию одного серверного процесса. PGA выделяется, когда процесс создается, и освобождается, когда он завершается. Серверный процесс создается, когда пользователь создает сессию в режиме выделенного сервера (dedicated server mode). Серверный процесс обслуживает запросы сделанные только внутри этой сессии. В отличие от SGA, с которой работает множество процессов, PGA используется только одним процессом.

PGA содержит:

  • Private SQL Area. При выдаче команды SQL создается курсор, который размещается в SGA (область shared SQL Area) и может использоваться совместно несколькими сеансами. Серверный процесс помещает ссылку и информацию, специфичную для конкретного запроса в PGA (область Private SQL Area), которая делится на:

                  -    Persistent area: информация привязки, освобождается только если закрыть курсор
                  -     Run-time area: создается на первом шаге выполнения команды SQL. Для команд DML (INSERT, UPDATE и DELETE) эта область освобождается сразу после выполнения команды. Для запросов (SELECT) она освобождается только после того, как пользователю будут переданы все результаты запроса или запрос будет прерван (например, пользователь нажал CTRL-С в момент получения результатов).

  • Private SQL Area выделяется по запросу пользовательского процесса. Число областей Private SQL Area, которое может быть выделено ограничено параметром OPEN_CURSORS (по умолчанию равно 50).
  • Session Memory: содержит переменные сессии и другую информацию, характерную для данной сессии.
  • SQL Work Areas: Используется для операций сортировок, hash-join, bitmap merge, bitmap create. Эту область можно контролировать явно.

Начиная с версии Oracle9i, размером SQL work area можно управлять автоматически установив параметры инициализации WORKAREA_SIZE_POLICY в AUTO (значение по умолчанию), и параметр PGA_AGGREGATE_TARGET. Последний задается в килобайтах, мегабайтах и байтах и указывает максимальный размер PGA, который может быть выделен процессами экземпляра. Параметр динамический и, при необходимости, DBA может его менять без перезагрузки экземпляра. Если установить эти два параметра, то ограничением на SQL Work Area управляет система и параметры инициализации *_AREA_SIZE (перечислены ниже) игнорируются.

До Oracle9i, администратор мог контролировать размер SQL work area с помощью нескольких параметров инициализации: SORT_AREA_SIZE, HASH_AREA_SIZE, ВITMAP_MERGE_AREA_SIZE и СREATE_BITMAP_AREA_SIZE. Выбор значения для этих параметров осложняется тем, что оптимальное ограничение на максимальный размер SQL Work Area зависит от объема обрабатываемых данных и суммарного размера SQL Work Area, которые уже выделены всем процессам. Таким образом с помощью этих разрозненных параметров сложно настроить оптимальное ограничение.

Примечание. Если пользователь подсоединяется к разделяемому серверу (Oracle Shared Server, ранее известен как MTS - Multithreaded server), практически все структуры памяти PGA размещаются в SGA (область памяти UGA - users global area).

Область памяти

Выделенный сервер

Разделяемый сервер

Persistent Area

в PGA

в SGA

Run-time Area (SELECT)

в PGA

в SGA

Run-time Area (DML/DDL)

в PGA

в PGA

 

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

Вас заинтересует / Intresting for you:

Системная глобальная область (...
Системная глобальная область (... 6532 просмотров Antoniy Tue, 21 Nov 2017, 13:32:12
Использование памяти PGA и UGA...
Использование памяти PGA и UGA... 6382 просмотров Денис Tue, 21 Nov 2017, 13:31:33
Область памяти Program Global ...
Область памяти Program Global ... 3651 просмотров Aleksandr Tue, 21 Nov 2017, 13:29:06
Композитное разделение Oracle
Композитное разделение Oracle 7433 просмотров Валерий Павлюков Tue, 21 Nov 2017, 13:32:50
Войдите чтобы комментировать