Базы данных - модели, разработка, реализация



         

Архитектура разделяемой памяти


По причинам объективно существующей разницы в скорости работы процессоров, оперативной памяти и устройств внешней памяти (эта разница в скорости существовала, существует и будет существовать всегда) буферизация страниц базы данных в оперативной памяти - единственный реальный способ достижения удовлетворительной эффективности СУБД.

Операционные системы создают специальные системные буферы, которые служат для кэширования пользовательских процессов. Однако стратегия буферизации, применяемая в операционных средах, не соответствует целям и задачам СУБД, поэтому для оптимизации обработки данных одной из главных задач СУБД является создание эффективной системы управления процессом буферизации.

Разделяемая память, управляемая СУБД, состоит из нескольких типов буферов:

  • Буферы страниц данных, которые содержат копии страниц данных, с которыми работает СУБД.
  • Буферы страниц журнала транзакций, которые отражают процесс выполнения транзакции - последовательности операций над БД, переводящей БД из одного непротиворечивого состояния в другое непротиворечивое состояние.
  • Системные буферы, которые содержат общую информацию о БД, о пользователях, о физической структуре БД, о базе метаданных.
  • Информация в буферах взаимосвязана, и требуется эффективная система поддержки единой работы всех частей разделяемой памяти.

    Если бы запись об изменении базы данных реально немедленно записывалась во внешнюю память, это привело бы к существенному замедлению работы системы.

    196

    Поэтому записи в журнал тоже буферизуются: при нормальной работе очередная страница выталкивается во внешнюю память журнала только при полном заполнении записями.

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




    Содержание  Назад  Вперед