Буферный кеш, журнальный буфер и согласованность данных

dbstalker, 19 мая

Почему содержимое буферного кеша так важно? Неужели не достаточно данных, что находятся в файлах данных на диске?

Под согласованностью данных будем понимать такое состояние данных, которое удовлетворяет требованиям их целостности и непротиворечивости. Что в свою очередь понимается как физическая сохранность данных, так и предотвращение неверного использования данных, поддержка допустимых сочетаний их значений, защита от структурных искажений и несанкционированного доступа;

Восстановить свои знания о буферном кеше можно прочитав мои ранние посты про буферный кеш,а о согласованности в управлении одновременным доступом и транзакции - общая теория.

А теперь немного моих умозаключений.

Практически сразу, как только база данных открывается, ее состояние на внешних носителях (диске) становится рассогласованным. Это значит, что если бы пользователю удалось (гипотетически) получить данные напрямую с диска, то он бы получил данные, которые были бы несогласованны.

В тоже время, если наложить данные, находящиеся в буферном кеше, на данные, находящиеся на диске, то тогда полученная база данных была бы согласованной. Я имею ввиду, что если из буферного кеша взять буфера, измененные завершившимися транзакциями, записать на диск, то, пожалуй, получим согласованное состояние данных. Если, конечно, не брать ко вниманию, что на диске могут оказаться измененные блоки незавершившихся транзакций.

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

Все мы знаем, как легко потерять содержимое буферного кеша – просто отключить питание сервера. И что же? Согласованность базы пропала? Оказывается, что оракл позаботился о нас.

В случае аварийного завершения работы экземпляра, оракл использует механизм восстановления согласованности основанный на применении журналов повторного выполнения. Главное в этом механизме – уменьшить время восстановления, то есть начинать накат с такого места в потоке журналов, чтобы время восстановление было приемлемо для системы.

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

Главные принципы идеологии ORACLE в этом контексте:

  1. Информация об изменении блока данных переносится во внешнюю память журнала раньше, чем модифицированный блок будет записан во внешнюю память базы данных. Такой метод журнализации называется Write Ahead Log (WAL) - "писать сначала в журнал". Его суть состоит в том, что если блок данных переписывается во внешнюю память, то сначала обязательно во внешней памяти журнала оказывается информация о его модификации. То есть, если на диске обнаруживается модифицированный объект, то в журнале есть информация об этом изменении. Но возможно, что есть информация в журнале о модификации какого-то блока, а сам измененный блок еще не сброшен на диск.
  2. Каждая успешно завершившаяся транзакция должна быть реально зафиксирована во внешней памяти. Система в случае сбоя должна восстановить согласованное состояние базы данных, которое содержит результаты всех зафиксированных к моменту сбоя транзакций.
  3. Нельзя все изменения вечно накапливать в памяти. На периодичность сброса информации из памяти на внешний носитель, очевидно, оказывает влияние ограниченность объема памяти и установленное время восстановления. Таким образом, контрольная точка должна выполняться регулярно.

Литература

http://citforum.univ.kiev.ua/database/oracle/kyte/02.shtml

http://www.praetoriate.com/t_oracle_data_block_caching_sga.htm

http://citforum.univ.kiev.ua/database/oracle/kyte/02.shtml

www.dcopeland.net/files/IT453chapter02buffercache.ppt

http://advait.wordpress.com/2007/06/13/tuning-buffer-cache-oracle-database-10g/

http://www.praetoriate.com/t_%20tuning_data_buffer_hit_ratio.htm

 

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

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



 

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

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

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

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


 
 

Бизнес форум

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

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