четверг, 10 февраля 2011 г.

Отложенная многоблочная процедура записи на диск

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

Таким образом, реализуется отложенная многоблочная процедура записи на диск.

Отсюда следует, что понятие отложенности означает: обновления данных, выполненные сервером, не фиксируются немедленно, а сервер ждет, пока не возникнут такие события:

1) внесены изменения в некоторое заранее установленное количество блоков данных;
2) обнаружена контрольная точка.

При наступлении любого из этих случаев группа модифицированных блоков переписывается на диск из кэш-буфера в файл. Для наиболее эффективной работы Oracle важно правильно задать размер кэш-буфера. Этот размер задается с помощью двух параметров в файле init.ora:
* dbBlockSize (размер блока)
* dbBlockBuffers (количество блоков)
Общий объем кэш-буфера в байтах определяется как произведение этих двух параметров.

Комментариев нет:

Отправить комментарий