Pga память что это

Обновлено: 06.07.2024

Области PGA и UGA

Как уже было сказано, PGA - это область памяти процесса. Эта область памяти используется одним процессом или одним потоком. Она недоступна ни одному из остальных процессов/потоков в системе. Область PGA обычно выделяется с помощью библиотечного вызова malloc() языка С и со временем может расти (или уменьшаться). Область PGA никогда не входит в состав области SGA - она всегда локально выделяется процессом или потоком.

Область памяти UGA хранит состояние сеанса, поэтому всегда должна быть ему доступна. Местонахождение области UGA зависит исключительно от конфигурации сервера Oracle. Если сконфигурирован режим MTS, область UGA должна находиться в структуре памяти, доступной всем процессам, следовательно, в SGA. В этом случае сеанс сможет использовать любой разделяемый сервер, так как каждый из них сможет прочитать и записать данные сеанса. При подключении к выделенному серверу это требование общего доступа к информации о состоянии сеанса снимается, и область UGA ста-

Не поддавайтесь ни на какие уговоры и не отказывайтесь от режима ARCHIVELOG. Вы потратили много времени на разработку приложения, поэтому надо, чтобы пользователи ему доверяли. О доверии можно забыть, если их данные будут потеряны.

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

Теперь пришло время рассмотреть основные структуры памяти сервера Oracle. Их

SGA, System Global Area - глобальная область системы. Это большой совместно используемый сегмент памяти, к которому обращаются все процессы Oracle.

PGA, Process Global Area - глобальная область процесса. Это приватная область

памяти процесса или потока, недоступная другим процессам/потокам.

UGA, User Global Area - глобальная область пользователя. Это область памяти, связанная с сеансом. Глобальная область памяти может находиться в SGA либо в PGA. Если сервер работает в режиме MTS, она располагается в области SGA, если в режиме выделенного сервера, - в области PGA.

Рассмотрим кратко области PGA и UGA, затем перейдем к действительно большой структуре - области SGA.

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

Размер области PGA/UGA определяют параметры уровня сеанса в файле init.ora: SORT AREA SIZE и SORT AREA RETAINED SIZE. Эти два параметра управляют объемом пространства, используемым сервером Oracle для сортировки данных перед сбросом на диск, и определяют объем сегмента памяти, который не будет освобожден по завершении сортировки. SORT AREA SIZE обычно выделяется в области PGA, a SORT AREA RETAINED SIZE - в UGA. Управлять размером областей UGA/PGA можно с помощью запроса к специальному представлению V$ сервера Oracle. Эти представления называют также представлениями динамической производительности. Подробнее эти представления V$ рассматриваются в главе 10. С помощью представлений V$ можно определить текущее использование памяти под области PGA и UGA. Например, запущен небольшой тестовый пример, требующий сортировки большого объема данных. Просмотрев несколько первых строк данных, я решил не извлекать остальное результирующее множество. После этого можно сравнить использование памяти до и после :

tkyte@TKYTE816> select a.name, b.value

2 from v$statname a, v$mystat b

4 and a.name like %ga %

session uga memory 67532

session uga memory max 71972

session pga memory 144688

session pga memory max 144688

4 rows selected.

Итак, перед началом сортировки в области UGA было около 70 Кбайт данных, а в PGA - порядка 140 Кбайт. Первый вопрос: сколько памяти используется в области PGA помимо UGA? Вопрос нетривиальный и на него нельзя ответить, не зная, подключен ли сеанс к выделенному или к разделяемому серверу; но даже зная это нельзя ответить однозначно. В режиме выделенного сервера область UGA входит в состав PGA. В этом случае порядка 140 Кбайт выделено в области памяти процесса или потока. В режиме MTS область UGA выделяется из SGA, а область PGA относится к разделяемому серверу. Поэтому при работе в режиме MTS к моменту получения последней строки из представленного выше запроса разделяемый серверный процесс уже может использоваться другим сеансом. Соответственно, область PGA уже не принадлежит нам, так что мы используем всего 70 Кбайт памяти (если только не находимся в процессе выполнения запроса, когда областями PGA и UGA суммарно используется 210 Кбайт памяти).

Теперь разберемся, что происходит в областях PGA/UGA нашего сеанса:

tkyte@TKYTE816> show parameter sort area

NAME TYPE VALUE

sort area retained size integer 65536

sort area size integer 65536

tkyte@TKYTE816> set pagesize 10

tkyte@TKYTE816> set pause on

tkyte@TKYTE816> select * from all objects order by 1, 2, 3, 4, . (Нажмите Control-С после первой страницы данных) .

tkyte@TKYTE816> set pause off

tkyte@TKYTE816> select a.name, b.value

2 from v$statname a, v$mystat b

4 and a. name like %ga % 5 /

session uga memory 67524

session uga memory max 174968

session pga memory 291336

session pga memory max 291336

4 rows selected.

Как видите, памяти использовано больше, поскольку данные сортировались. Область UGA временно увеличилась примерно на размер SORT AREA RETAINED SIZE, a область PGA - немного больше. Для выполнения запроса и сортировки сервер Oracle выделил дополнительные структуры, которые оставлены в памяти сеанса для других запросов. Давайте выполним ту же операцию, изменив значение SORT AREA SIZE:

tkyte@TKYTE816> alter session set sort area size=1000000, Session altered.

  • Что такое триггер?
  • Что такое транзакция?
  • Какие категории файлов включает физический уровень БД Oracle?
  • В каком табличном пространстве хранится словарь данных?
  • Какая разница между сегментом, экстентом и блоком данных?

На эти вопросы очень просто ответить, внимательно прочитав предыдущий выпуск.

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

Что же представляет собой разделяемая память (shared memory)? Oracle использует разделяемую память в разных целях: как кэширование данных и индексов, так и хранение программного кода. Разделяемая память делится на несколько частей (или структур памяти). Основными структурами памяти Oracle являются Системная Глобальная Область (System Global Area или SGA) и Программная Глобальная Область (Program Global Area или PGA). Рассмотрим SGA и PGA более подробно.

Системная Глобальная Область (SGA)

кэш буферов БД - здесь хранятся последние открытые блоки данных. Эти блоки могут содержать данные, которые изменились, но еще не были записаны на диск (грязные блоки); данные, которые не изменялись либо были записаны на диск после изменения (чистые блоки). Так как кэш буферов БД хранит блоки данных на основе алгоритма последних используемых блоков, то наиболее активно используемые блоки постоянно остаются в памяти (тем самым, снижая дисковый ввод/вывод и увеличивая производительность системы). буфер журнала изменений - хранит данные об изменениях БД. Буфер журнала изменений записывается в файл журнала изменений настолько быстро и эффективно, насколько это возможно. Помните, что журнал изменений используется для восстановления экземпляра СУБД Oracle в случае сбоя системы. разделяемый пул - Это область SGA, в которой хранятся такие структуры разделяемой памяти, как разделяемые SQL-области в библиотечном кэше и внутренняя информация словаря данных. Разделяемый пул важен, потому что недостаточный объем памяти, выделенный для него, может привести к деградации производительности всей системы. Разделяемый пул состоит из библиотечного кэша и кэша словаря данных.

Библиотечный кэш используется для хранения разделяемых SQL. Здесь для каждого уникального SQL-выражения строиться дерево разбора строк и план исполнения, которые кэшируются (т.е. сохраняются в библиотечном кэше). Если несколько приложений отправляют одинаковые SQL-выражения, то для ускорения работы используется разделяемая SQL-область (так как используются уже разобранные строки и готовый план исполнения, то происходит экономия времени).

пользовательская информация (например, пользовательские привилегии) ограничения целостности, определенные для таблиц БД информация об объеме памяти, определенном и используемом объектами схемы данных

Oracle часто обращается к словарю данных при разборе SQL-выражений. Эти обращения составляют сущность работы Oracle. Узкие места в словаре данных влияют работу всех пользователей системы Oracle. Поэтому Вы всегда должны быть уверены, что объем памяти, определенный для словаря данных, достаточно велик для кэширования данных. Если кэш словаря данных мал, то Вы заметите значительное снижение производительности. Когда под кэш словаря данных Вы определите достаточный объем памяти, существенных проблем с производительностью быть не должно.

Программная Глобальная Область (PGA)

пространство стека - это память, хранящая переменные сеансов, массивы сеансов и т.д. информация сеанса - если Oracle работает не в мультинитевом режиме, то информация сеанса хранится в PGA. В противном случае, информация сеанса хранится в SGA. приватная SQL-область - это часть PGA, где хранятся связанные переменные и буферы реального времени.

Процесс (или нить) - это механизм выполнения программного кода, который может выполняться незаметно для пользователя. Кроме того, несколько процессов могут работать одновременно. В разных операционных системах и на разных платформах они могут называться по-разному (процессы, нити, демоны и т.д.), но, в сущности, одинаковы. СУРБД Oracle работает с двумя видами процессов: пользовательские процессы и процессы Oracle (также известные как фоновые или теневые). В некоторых операционных системах (таких как Windows NT) процессы действительно являются нитями, но, чтобы не путаться в понятиях, будем называть их просто "процессами".

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

Процессы Oracle выполняют функции для пользовательских процессов. Могут быть разбиты на две группы: серверные процессы (выполняющие функции для активных процессов) и фоновые процессы (выполняют функции СУРБД в целом).

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

25264937_201105101501121.jpg


Один, структура памяти

SGA (глобальная область системы): используется всеми сервисными и фоновыми процессами;
PGA (Program Global Area): только для каждого процесса обслуживания и фонового процесса; каждый процесс имеет PGA.


Два, SGA
Содержит данные экземпляра и управляющую информацию, включая следующую структуру памяти:
1) Буферный кеш базы данных: кэширует блоки данных, полученные с диска.
2) Буфер журнала повтора: кэшируйте информацию о повторе перед записью на диск.
3) Общий пул: кэширует различные структуры, которые могут быть разделены между пользователями.
4) Большой пул: дополнительная область, используемая для кэширования больших запросов ввода-вывода для поддержки параллельных запросов, режима общего сервера и определенных операций резервного копирования.
5) Пул Java: сохраните данные и код Java конкретного сеанса в виртуальной машине Java.
6) Пул потоков: используется потоками Oracle.
7) Хранить буферный кеш: Сохраните данные, хранящиеся в буферном кеше, чтобы сделать их как можно дольше.
8) Перезапустить буферный кеш: сохранить данные, срок действия которых истекает, в буферном кеше.
9) Буфер размером блока nK: Обеспечивает буфер для блоков данных, которые отличаются от размера блока данных по умолчанию в базе данных. Используется для поддержки передачи табличного пространства.

Буферный кэш базы данных, общий пул, большой пул, пул потоков и пул Java автоматически настраиваются в соответствии с текущим статусом базы данных;
Хранить буферный кеш, перезапускать буферный кеш, буфер размером nK может быть динамически изменен без закрытия экземпляра.

В структуре памяти Oracle, помимо SGA (System Global Area), процесс Oracle также использует следующие три глобальные области:
PGA: process global area Многие люди не знают PGA с UGA Разница между двумя , Собственно разница между двумя Подобно разнице между процессом и сеансом из . Хотя обычно существует взаимно однозначная связь между процессом и сеансом , Но на самом деле сложнее, чем это . Очевидная ситуация MTS Конфигурация , Часто сессий намного больше, чем процессов . В этой конфигурации , У каждого процесса будет один PGA, В каждом разговоре будет один UGA . PGA Содержащаяся информация не имеет отношения к разговору , а также UGA Содержащаяся информация основана на конкретном сеансе .

Глобальную область процесса (PGA) можно понимать как глобальную область процесса или глобальную область программы. Ее сегмент памяти находится в частной памяти процесса, а не в общей памяти. Серверный процесс имеет свой собственный PGA, который содержит только конкретную информацию, относящуюся к процессу.Структуру в PGA не нужно защищать защелками, потому что другие процессы не могут войти в нее, чтобы получить к ней доступ.

PGA состоит из двух основных областей: Fixed PGA И переменный PGA или называется PGA Heap . Роль фиксированного PGA аналогична роли фиксированного SGA: оба содержат атомарные переменные (неразделимые), небольшие структуры данных и указатели на переменные PGA. .
Переменная PGA - это куча. Ее фрагменты можно загрузить с Fixed Table X$KSMPP Проверьте это, структура этой таблицы такая, как упоминалось ранее X$KSMSP То же самое. PGA HEAP содержит некоторую постоянную память, связанную с фиксированной таблицей, которая зависит от установки определенных параметров, таких как DB_FILES, LOG_FILES, CONTROL_FILES. 3. UGA
UGA (глобальная область пользователя) содержит Информация о конкретном сеансе.

Как и PGA, UGA также состоит из двух областей: фиксированного UGA и переменного UGA, также известного как UGA HEAP.Фиксированный UGA содержит около 70 атомарных переменных, небольшие структуры данных и указатели на переменный UGA.

Чанки в UGA HEAP могут просматривать таблицу из своего собственного сеанса X$KSMUP Получите релевантную информацию, структура этой таблицы такая же, как у X $ KSMSP. UGA HEAP содержит некоторые сегменты постоянной памяти, связанные с фиксированными таблицами, которые зависят от настроек некоторых параметров. Это параметры OPEN_CURSORS, OPEN_LINKS и MAX_ENABLE_ROLES.

Расположение UGA в памяти зависит от того, как настроен сеанс . Если режим конфигурации сеансового соединения - это режим выделенного сервера (DDS), то есть сеанс соответствует процессу, тогда UGA помещается в PGA. В PGA фиксированный UGA является одним из блоков, а UGA HEAP является дочерним по отношению к PGA. Куча (Subheap). Если сеансовое соединение настроено в режиме общего сервера (MTS), фиксированный UGA - это фрагмент в ОБЩЕМ ПУЛЕ или большом пуле, а UGA HEAP - это подкуча в ОБЩЕМ пуле или большом пуле.

В отличие от других регионов мира , Call Global Area Временно . Он существует только во время вызова функции , Обычно требуется только для вызовов самого нижнего уровня экземпляра CGA, Такие как : Проанализировать инструкцию SQL, выполнить инструкцию SQL и извлечь вывод инструкции SELECT.

в одиночестве CGA Требуется при рекурсивном вызове . в SQL Во время анализа предложения , Требуются рекурсивные вызовы информации словаря данных , Потому что быть правым SQL Грамматический анализ , Также рассчитайте план выполнения при оптимизации выписки . выполненный PL/SQL Блокировать при обработке SQL Выполнение оператора также нужно вызывать рекурсивно. , в DML Когда оператор выполняется, выполнение триггера также необходимо вызывать рекурсивно. .

Независимо от того UGA Размещен PGA До сих пор внутри SGA в ,CGA Все PGA Подгруппа (Subheap) . Важным выводом из этого факта является то, что сеанс должен быть процессом во время вызова. . Ибо в MTS из Oracle Это важно понимать при разработке приложений процесса базы данных. . Если будут еще звонки , Придется увеличить processes Чтобы приспособиться к увеличению количества звонков .

Нет CGA Структура данных в ,CALLS Не могу работать . И на самом деле последовал CALL Связанные структуры данных обычно размещаются UGA в , Такие как SQL AREA,PL/SQL AREA , SORT AREA, hash area, bitmap area Они все должны быть UGA в , Потому что они должны CALLS Всегда должен существовать и быть доступным . а также CGA Структура данных, содержащаяся в CALL Может быть выпущен после окончания . Например CGA Содержит информацию о рекурсивных вызовах , непосредственный I/O BUFFER Есть и другие временные структуры данных .

PGA включает:
1)Fixed PGA
2) UGA (выделенный сервер), когда система является общим сервером, UGA находится в общем пуле или большом пуле.
3)CGA

И UGA, и CGA принадлежат Variable PGA (куча PGA)

UGA включает:

1)Fixed UGA
2)private SQL area
3)session memory
4)SQL Work Areas

Частная область SQL, память сеанса и рабочие области SQL принадлежат переменной UGA (куча UGA).

6. private SQL area
можно разделить на две части:
1) Область постоянной памяти: в ней хранится некоторая информация о курсоре, необходимая, когда один и тот же оператор SQL выполняется несколько раз, например связываемые переменные. Эта часть памяти освобождается только при закрытии курсора. Так называемая: область постоянной памяти.

2) Область выполнения: первым шагом при обработке операторов SQL является создание области выполнения, в которой хранится информация, используемая при выполнении SQL. Для операторов DML область освобождается при выполнении SQL; для операторов select область освобождается, когда все строки данных возвращаются пользователю.

7. session area
Сохранение некоторых параметров сеанса, таких как: измененные параметры NLS, измененные параметры оптимизатора optimizer_mode, информация отслеживания, включенная командой alter session, доступные роли и открытые ссылки на БД. , Фактически используемый пакет и т. Д.

8. SQL work area
Рабочая область SQL - самая важная часть UGA, занимающая большую часть памяти UGA. В основном используется при сортировке (по порядку, по группировке), хэш-объединению. Размер рабочей области SQL имеет большое влияние на производительность.

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

1) оптимальный: сортировка полностью производится в памяти;
2) onepass: сортировка завершена, диск нужно использовать один раз;
3) многопроходный: для завершения сортировки требуется использовать диск несколько раз;

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

Алгоритм сортировки использует сортировку по куче; метод сортировки - это пакетная сортировка, например сортировка 10 000 записей, деление их на 100 раз и сортировка 100 записей каждый раз; когда сортировка 100 завершена, запись во временное табличное пространство; Отсортируйте следующие 100 элементов и запишите их во временное табличное пространство после сортировки; наконец, выполните операцию слияния для 100 частично отсортированных очередей в временном табличном пространстве. Чтобы завершить сортировку 10 000 записей. Это идеальная ситуация, потому что диск читается и записывается только один раз, что относится к onepass. Если сортировка включает несколько операций чтения и записи диска, она относится к многопроходной. Обычно мы стараемся настроить размер sort_area_size, чтобы избежать многопроходной сортировки.

Рабочую область SQL можно разделить на следующие части:

Область сортировки (sort_area_size), хэш-область (hash_area_size), область растрового изображения ( create_bitmap_area_size, bitmap_merge_area_size) и т. д. Они существенно влияют на производительность сортировки, хэш-соединения, растрового изображения и т. д.

9. Автоматическое управление PGA
До Oracle9i мы управляли PGA, задавая такие параметры, как sort_area_size, hash_area_size.

SQL> show parameter area_size;

NAME TYPE VALUE

bitmap_merge_area_size integer 1048576

create_bitmap_area_size integer 8388608

hash_area_size integer 131072

sort_area_size integer 65536

workarea_size_policy string AUTO

SQL> show parameter sort_area;

NAME TYPE VALUE

sort_area_retained_size integer 0

sort_area_size integer 65536


Начиная с Oracle9i, Oracle представила автоматическое управление PGA. Размер отдельно устанавливать не нужно.

Настройка параметров workarea_size_policy Можно выбрать параметры между автоматическим PGA (автоматическое значение по умолчанию автоматически) и ручным управлением PGA (ручное).

Затем передайте параметры инициализации pga_aggregate_size Установить общий объем памяти PGA (эквивалент sga_max_size SGA). Обратите внимание, что в Oracle9i автоматическое управление PGA действительно только для выделенного сервера, а не для разделяемого сервера, но в Oracle10g автоматическое управление PGA действительно.

10. Настройка размера PGA:

Для систем OLTP типичная память PGA:

PGA_AGGREGATE_SIZE = (total_memory * 80%) * 20%

Для систем OLAP будут выполняться очень большие запросы:

PGA_AGGREATE_SIZE = (total_memoery * 80%) * 50%

80% означает, что 80% общей памяти машины выделено Oracle. Тогда 20% из 80% будут переданы PGA.

Мы также можем использовать некоторые представления, относящиеся к PGA, чтобы настроить размер pga_aggregate_size:

v$pgastat, v$pga_target_advice, v$pga_target_advice_histogram

Используйте v $ pgastat для просмотра текущей статистики PGA (Аналогично v $ sgastat и SGA):

NAME VALUE UNIT

aggregate PGA target parameter 71303168 bytes

aggregate PGA auto target 27297792 bytes

global memory bound 14260224 bytes

total PGA inuse 40966144 bytes

total PGA allocated 88008704 bytes

maximum PGA allocated 125034496 bytes

total freeable PGA memory 4259840 bytes

process count 23

max processes count 40

PGA memory freed back to OS 492634112 bytes

total PGA used for auto workareas 0 bytes

maximum PGA used for auto workareas 6105088 bytes

total PGA used for manual workareas 0 bytes

maximum PGA used for manual workareas 0 bytes

over allocation count 0

bytes processed 6275959808 bytes

extra bytes read/written 0 bytes

cache hit percentage 100 percent

recompute count (total) 33814

19 rows selected.
максимальное выделенное PGA: максимальное выделенное PGA

over allocation count: Over allocating PGA memory can happen if the value ofPGA_AGGREGATE_TARGET is too small. When this happens, the Oracle Database cannot honor the value of PGA_AGGREGATE_TARGET and extra PGA memory needs to be allocated. If over allocation occurs, then increase the value of PGA_AGGREGATE_TARGET using the information provided by the V$PGA_TARGET_ADVICE view.

extra bytes read/written: Количество байтов, обработанных во время дополнительных проходов входных данных, накопленное с момента запуска экземпляра. Если рабочая область не может работать оптимально, выполняется один или несколько из этих дополнительных проходов.

Используйте v $ pga_target_advice, чтобы оценить размер PGA, который является рекомендуемым значением PGA. (Аналогично v $ sga_target_advice и SGA):
V$PGA_TARGET_ADVICE predicts how the cache hit percentage and over allocation count statistics displayed by the V$PGASTAT performance view would be impacted if the value of the PGA_AGGREGATE_TARGET parameter is changed . The prediction is performed for various values of the PGA_AGGREGATE_TARGET parameter, selected around its current value. The advice statistic is generated by simulating the past workload run by the instance.

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

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

Глобальные программные области (PGA): области памяти, которые содержат данные и управляющую информацию для серверного или фонового процесса. PGA - неразделяемая память, создаваемая Базой данных Oracle при запуске серверного или фонового процесса. Доступ к PGA является монопольным для серверного процесса. У каждого серверного процесса и фонового процесса есть своя собственная PGA.

SGA - область памяти, которая содержит данные и управляющую информацию для экземпляра. SGA включает следующие структуры данных:

Разделяемый пул: Кэширует различные конструкты, которые могут совместно использоваться пользователями

Кэш буферов базы данных: Кэширует блоки данных, получаемые от базы данных

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

Буферный пул удаления: специализированный тип буферного кэша БД, который настраивается для быстрого повторного использования или удаления блока из памяти

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

Буфер журнала повторов: Кэширует информацию о повторах (используемую, например, при восстановлении экземпляра), пока она не будет записана в физические файлы журнала повторов, хранимые на диске

Большой пул: Дополнительная область, которая обеспечивает выделения памяти большого объема для определенных больших процессов, таких как резервное копирование и операции восстановления Oracle, или серверные процессы ввода-вывода

Пул Java: Используется для всех специфичных для сеанса кода Java и данных в виртуальной машине Java (JVM)

Пул потоков: Используется потоками Oracle, чтобы хранить информацию, требуемую для операций захвата и применения

Когда Вы запускаете экземпляр с помощью Enterprise Manager или SQL*Plus, объем памяти, выделенный для SGA, выводится на экран.

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

С динамичной инфраструктурой SGA размеры буферного кэша базы данных, разделяемого пула, большого пула, пула Java и пула потоков могут изменяться без необходимости завершения экземпляра.

База данных Oracle использует параметры инициализации, чтобы создать и управлять структурами памяти. Самый простой способ управлять памятью состоит в том, чтобы позволить базе данных автоматически управлять и настраивать ее для Вас. Чтобы сделать это (на большинстве платформ), необходимо только установить целевые параметры инициализации объема памяти (MEMORY_TARGET) и максимального объема памяти (MEMORY_MAX_TARGET).

Читайте также: