Shared pool oracle что это

Обновлено: 05.07.2024

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.

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