Архитектура сервера базы данных. Структуры памяти. Системная глобальная область. Кэш буферов базы данных (Database Buffer Cache). Буфер оперативного журнала (Redo Log Buffer)

Страницы работы

10 страниц (Word-файл)

Содержание работы

Архитектура сервера базы данных

Структуры памяти

Системная глобальная область

Кэш буферов базы данных (Database Buffer Cache)

Буфер оперативного журнала (Redo Log Buffer)

Разделяемый пул (Shared Pool)

Программная глобальная область

Процессы

Фоновые процессы

Серверные процессы

Процессы пользователей

Файлы

Файлы базы данных

Файл параметров (Parameter File)

Файлы трассировки (Trace Files) и файл протокола (Alert File)

Конфигурации сервера Oracle

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

Многопотоковый сервер

Запуск и остановка базы данных

Примеры клиентских приложений

Литература

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

Основные компоненты сервера:

§  Структуры памяти.

§  Процессы.

§  Файлы.

Структуры памяти

Каждый раз, когда стартует экземпляр Oracle, в оперативной памяти выделяется системная глобальная область (System Global Area) SGA, в которой содержатся данные и управляющая информация, используемые сервером Oracle для организации доступа к конкретной базе данных. SGA строится в совместно используемой (разделяемой) области оперативной памяти. Когда с экземпляром работают несколько пользователей, они совместно используют (разделяют) данные, находящиеся в SGA. SGA выделяется сразу же после создания экземпляра и освобождается только после полного закрытия экземпляра.

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

Системная глобальная область

Системная глобальная область (SGA) – разделяемая область памяти, содержащая данные и управляющую информацию для экземпляра Oracle. SGA строится в совместно используемой (разделяемой) области оперативной памяти. Oracle выделяет системную глобальную область при запуске экземпляра и освобождает ее после полного закрытия экземпляра. Каждый экземпляр Oracle имеет свою собственную системную глобальную область.

Системная глобальная область состоит из следующих структур:

§  Кэш буферов базы данных (Database Buffer Cache)

§  Буфер оперативного журнала (Redo Log Buffer)

§  Разделяемый пул (Shared Pool)

Кэш буферов базы данных (Database Buffer Cache)

Кэш буферов базы данных – часть SGA, которая содержит копии блоков данных, считанных с диска (Рисунок 1). Размер каждого буфера равен одному блоку Oracle. Кэш буферов базы данных используется совместно всеми пользователями, одновременно подключенными к базе данных. Когда процесс пользователя запрашивает данные первый раз, они должны быть скопированы с диска в кэш (промах кэша – cache miss). Если процесс запрашивает данные, которые уже находятся в кэше, то данные читаются непосредственно из оперативной памяти (попадание в кэш – cache hit). Любое обновление данных, также, происходит в кэше буферов базы данных. Доступ к данным, находящимся в кэше, существенно быстрее, чем к данным на диске.

Буфера в кэше организованы в виде двух списков: списка измененных буферов и списка LRU (least recently used):

·  Список измененных буферов содержит буфера, которые изменялись, но еще не были записаны на диск.

·  Список LRU – список буферов, упорядоченных по времени последнего обращения. Список содержит:

o  Свободные буфера (free buffers) – буфера, которые не изменялись,

o  Закрепленные буфера (pinned buffers) – буфера, к которым обращаются в данный момент

o  Грязные буфера (dirty buffers) – буфера, которые изменялись и не были записаны на диск.

Буфер, к которому обращается процесс Oracle, помещается в буфер MRU (most recently used), который находится в начале списка LRU. Грязные буфера со временем оказываются в конце списка LRU.

Перед тем, как прочитать блок данных в кэш, соответствующий процесс должен найти свободный буфер. Процесс просматривает список LRU, начиная с буфера, к которому обращались наиболее давно («least recently used» конец списка). Поиск продолжается до тех пор, пока не будет найден свободный буфер, или не будет просмотрено заданное число буферов.

Если процесс находит грязный буфер при просмотре списка LRU, он передвигает его в список измененных буферов и продолжает поиск. Когда процесс находит свободный буфер, он считывает в него блок данных с диска и передвигает буфер в MRU конец списка LRU.

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

Буфер оперативного журнала (Redo Log Buffer)

Буфер оперативного журнала – это циклический буфер в SGA, содержащий информацию об изменениях, внесенных в базу данных (Рисунок 1). Эта информация хранится в журнальных записях (redo entries). Журнальные записи содержат информацию, необходимую для восстановления или отмены изменений, внесенных в базу данных. Буфер оперативного журнала заполняется от начала до конца, затем новая информация снова записывается в начало буфера. После заполнения содержимое буфера переносится в файл журнала транзакций. Если требуется восстановление, буфер оперативного журнала используется для реконструкции изменений, внесенных в сегменты данных.

Рисунок 1 Системная глобальная область (System Global Area, SGA)

Разделяемый пул (Shared Pool)

Разделяемый пул – это область SGA, которая содержит библиотечный кэш (library cache), кэш словаря данных (dictionary cache) и управляющие структуры, такие, как требования сетевой безопасности и области памяти, используемые для  конвертации национальных кодировок (Рисунок 2).

Библиотечный кэш

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

Похожие материалы

Информация о работе