Как с буферным кэшем и между собой взаимодействуют серверный процесс пользователя и DBWn?

dbstalker, 24 апреля

Вся информация, которую получают и обрабатывают пользователи,проходит через буферный кэш. То есть информация с внешних носителей считывается в память, после модификации возвращается на диск.Рассмотрим как взаимодействуют серверные процессы пользователей и фоновый процесс DBWR.

Server Process

  • Сначала, серверный процесс пользователя проверяет наличие необходимого блока в буферном кеше. Если такой блок обнаружен, он перемещается в MRU конец списка LRU (стандартный LRU алгоритм). Это - логическое чтение (перемещаются только указатель на буфер), поскольку никакой фактической операции В/В не происходит. Если же нужный блок не обнаружен в буферном кеше, серверный процесс должен считать блок данных из файла данных.
  • Перед чтением из файла данных, серверный процесс ищет в списке LRU свободный блок.
  • Во время поиска по списку LRU, происходит процесс перемещения модифицированных (грязных) блоков в dirty список (еще его называют checkpoint queue,LRUW) процессом DBWR.
  • Если размер dirty списка превышает установленный в базе данных соответствующий порог, то серверный процесс уведомляет фоновый процесс DBWn, что пора сбрасывать грязные блоки из буферного кеша в файлы данных. Если серверный процесс не может найти свободного блока в пределах значения параметра _db_block_max_scan_pct, то об этом также уведомляется DBWn для сброса грязных блоков. Поиск прекращается.
  • После того, как свободный блок будет обнаружен, серверный процесс начнет читать данные из файла данных в свободный буфер, который перемещается MRU конец списка LRU (стандартный LRU алгоритм).
  • Если блок несогласован по чтению, то создается более ранняя версия данных из текущих данных и данных повторного выполнения.

DBWn process

Процесс DBWn управляет буферным кешем и занимается записью модифицированных блоков на диск. Этот процесс реагирует на следующие события в Оракле:

  • Событие Dirty List Exceeds its Size Threshold: серверный процесс находит, что грязный список превысил размер порога, и сигнализирует об этом DBWn, чтобы тот сбросил грязные блоки на диск. DBWn пишет на диск блоки из dirty (грязного) списка и неважно являются ли изменения в блоках зафиксированными или нет. Размер dirty списка (checkpoint queue) регулируется различными параметрами: от старых LOG_CHECKPOINT_INTERVAL и LOG_CHECKPOINT_TIMEOUT до новых FAST_START_IO/MTTR_TARGET.
  • Событие Search Threshold Exceeded: когда серверный процесс не может найти свободного блока в списке LRU в пределах значения параметра _db_block_max_scan_pct, то он уведомляет DBWn, что пора сбрасывать грязные блоки. DBWn пишет на диск блоки непосредственно из списка LRU и неважно являются ли изменения в блоках зафиксированными или нет.
  • Событие Three Second Time-Out: Если процесс DBWn никто раньше неразбудит, то каждые три секунды DBWn просыпается и переносит грязные блоки из списка LRU в dirty список, чтобы было достаточно буферов для записи новых блоков. Если наступило хотя бы одно из двух предыдущих событий или событие LGWR Signal a Checkpoint, то DBWn записывает блоки в файлы данных и неважно являются ли изменения в блоках зафиксированными или нет. В противном случае опять ложится спать.
  • Событие LGWR Signal a Checkpoint: Когда LGWR оповещает, что контрольная точка произошла, DBWn переносит грязные блоки из LRU списка в грязный список. Информацию об этом можно почерпнуть в посте Нормальная контрольная точка и Инкрементальная контрольная точка.
  • Событие Alter Tablespace Offline Temporary or Alter Tablespace Begin Backup: Когда статус табличного пространства изменен с опцией Offline Temporary или Begin Backup, то DBWn пишет грязные буфера этого табличного пространства из грязного списка в файлы данных этого табличного пространства.
  • Событие Drop Object: Когда объект удаляется, DBWn сначала сбрасывает грязные блоки объекта на диск.
  • Событие Clean Shutdown (чистое выключение): Normal, Immediate, or Transactional

 

Новый комментарий

Я не спамер: введите суму 4+1



 

От авторов блога

О Блоге - прочитай перед началом.

Задать вопрос и получить ответ - уже решено 94 вопросов

Глоссарий - список терминов и сокращений


 
 

Бизнес форум

Последние темы:

Печь булерьян в дом
21 сентября, 1 ответа
Как Открыть Футбольную Школу
20 сентября, 1 ответа
IP телефония
20 сентября, 1 ответа