Спасибо господину Илюшечкину Владимиру Михайловичу.
Статья содержит краткий обзор по следующим темам: архитектура экземпляра Oracle, глобальная системная область, т.е. разделяемый пул, кэш-буфер данных, отложенную процедуру записи на диск, буфер журнала транзакций.
ТЕМА 6
Архитектура экземпляра Oracle.
Экземпляр (сервер) базы данных — набор структур памяти и фоновых процессов, обращающихся к группе файлов базы данных.
Глобальная системная область (ГСО) — доступная для всех процессов область. Освобождается область только после полного выключения (завершения работы) экземпляра.
Разделяемый пул + кэш-буфер данных + буфер журнала транзакций + структуры сервера MTS
Разделяемый пул содержит:
- кэш библиотеки — текст операторов SQL, форматы лекс. анализатора, план выполнения операторов SQL, заголовки пакетов PL/SQL и процедур
- разделяемые области SQL (зависит от текущего сеанса работы)
- локальные области SQL (формируется для каждой инициируемой транзакции и закрывается после того, как закрывается соответствующий курсор)
- постоянная область (содержит информацию, которая сохраняет свои значения)
- область времени выполнения (область, содержащая информацию только для того выражения, которое выполняется в данный момент)
- кэш словаря данных
- хранит строки словаря данных (для синтаксического анализа строк)
- управляющие структуры сервера
Разделяемый пул:
Параметр SHARED_POOL_SIZE в файле init.ora. Необходимо задавать объем пула достаточный для загрузки и сохранения блоков, написанных на языке PL/SQL и выражений на SQL.
Команда ALTER SYSTEM FLUSH SHARED_POOL — осуществит сжатие информации в разделяемом пуле, с целью, чтобы объекты могли быть размещены в нем.
Кэш буфер данных:
Основная часть в ГСО. От нее во многом зависит производительность системы. Доступ к кэш-буферу происходит во много раз быстрее, чем доступ к дискам.
Желательно, чтобы большая часть транзакций происходила над данными, хранящихся в оперативной памяти компьютера.
- влияет на производительность
- содержит обрабатываемые данные
- содержит обновляемые данные
СУБД переносит данные из кэш-буфера на диск в соответствии с порядком их размещения в специальном списке LRU (List Recently Used), который отслеживает обращение к блокам данных и учитывает частоту обращений.
Dirty-список
- содержит блоки, в которых произошли изменения (грязные (dirty) блоки);
- отслеживает все изменения блоков данных, выполненные за время их нахождения в кэш-буфере данных и не зафиксированные на диске.
Отложенная процедура записи на диск
Обновление данных, выполненое СУБД, не фиксируется немедленно в дисковой памяти. СУБД ждет, когда:
- будут внесены изменения в некоторое число блоков данных
- потребуется освободить место в кэш-буфере для загрузки новых блоков данных
- обнаружена контрольная точка
- истекло время, заданное процессом DBWR.
Буфер журнала транзакций
— хранит все данные о завершившихся транзакциях до тех пор, пока эти данные не будут переписаны в файл оперативного журнала транзакций. Если размер буфера невелик, то процесс LGWR очень часто будет переписывать информацию из буфера в файл и тем самым замедлять работу системы.
Процесс записи в журнал можно оперативно контролировать при помощи представления V$SYSSTAT (можно получить время ожидания процессом доступа к БЖТ).
Защелка (latch)
— представляет собой блокировку некоторой структуры в памяти процессом. Процесс блокирует посторонние обращения.
Параметр TRANSACTIONS
— ограничивает количество транзакций, данные о которых заносятся в журнал одновременно.
Параметр _LOG_SIMULTANEOUS_COPIES
По умолчанию значение параметра равно количеству процессоров в системе. Используя защелки копий журнала транзакций, несколько процессов могут одновременно записывать информацию в буфер журнала транзакций.
Представление V$LATCH содержит информацию о каждом типе защелки.
В следующей статье подробно рассмотрим фоновые процессы Oracle, в том числе процессы, предназначенные для управления другими процессами и восстановления БД при ее открытии, процесс, который обеспечивает запись измененных блоков данных из оперативной памяти в файлы данных, другие фоновые процессы, процессы сервера и пользователя, глобальную область процессов, процессы-диспетчеры.
Awayka из страны Notavailable =]
Спасибо за выложенные лекции! Жаль, что они таки не все выложены.
Всегда пожалуйста. Рада, что кому-то они пригодились :)
Возможно, когда-нибудь таки дойдут руки выложить оставшееся, но я бы на это не надеялась..