Для чего нужна контрольная точка ?

dbstalker, 29 ноября

Есть такое очень важное и нужное понятие в ORACLE как контрольная точка. Мной была сделана попытка разобраться, что же это такое. И вот что из этого вышло.

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

Выполнение контрольной точки является весьма затратной операцией.Если говорить напрямик, то контрольная точка - ВРАГ производительности системы.Поэтому в контексте производительности системы идеальным является следующий вариант:

  1. В начале рабочего дня все блоки данных, которые будут изменяться на протяжении всего дня, загружаются в буферный кеш.
  2. В процессе работы блоки становятся «грязными», но на диск не сбрасываются, т.е. контрольная точка не выполняется. Для этого буфер должен быть достаточно большим.
  3. Данные повторного выполнения регулярно сбрасываются из журнального буфера на диск в журнальные файлы. Так как контрольная точка не выполняется, то активных (нужных для восстановления ) журнальных файлов становится все больше, а неактивных все меньше. Объема (размер*количество) журнальных файлов должно быть достаточно на весь рабочий день.
  4. После окончания рабочего дня выполняется одна контрольная точка: все «грязные» блоки сбрасываются на диск в файлы данных.

Но при таком идеальном варианте встает вопрос: сколько же потребуется времени на восстановление в случае сбоя? Поэтому приходиться смириться с тем, что контрольную точку нужно выполнять чаще, чем раз в день. Частота выполнения контрольной точки тесно связана со временем восстановления.

Вывод можна сделать такой: контрольные точки нужны только если органичены ресурсы (они всегда ограничены) и если нужно ограничить временя восстановления системы после сбоя (а его всегда надо ограничить)

А если на полном серьезе, то контрольная точка нужна для:

  1. обеспечения физической записи на диск обновленных в буферном кэше блоков.
  2. обеспечения циклического использования журнальных файлов;
  3. уменьшения времи восстановления после сбоя экземпляра (instance failure) или носителя (media failure)

 

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

Я не спамер: введите суму 0+2



 

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

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

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

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


 
 

Бизнес форум

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

Микрофон
19 августа, 2 ответа
Сумочка
19 августа, 2 ответа
средства для рук
17 августа, 3 ответа