Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курс лекций СБД.doc
Скачиваний:
23
Добавлен:
13.11.2019
Размер:
1.94 Mб
Скачать
      1. Непосредственное управление данными во внешней памяти

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

      1. Управление буферами оперативной памяти

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

      1. Управление транзакциями

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

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

Каждая транзакция начинается при согласованном состоянии базы данных и оставляет это состояние согласованным после своего завершения. Система, поддерживающая процесс транзакции, обеспечивает гарантию, что если во время выполнения неких обновлений произошла ошибка (по любой причине), то все эти обновления будут аннулированы. Таким образом, транзакция или выполняется полностью, или полностью отменяется (как будто она вообще не выполнялась). Это свойство транзакции обеспечивается операторами commit и rollback. Оператор commit выполняется, если обновления прошли успешно, изменения в базе данных выполнены и стали постоянными. Если что-то не так, если обновление прервано каким-либо условием ошибки, то выполняется оператор rollback и любые изменения отменяются.

Транзакции обладают четырьмя важными свойствами:

  • Атомарность (atomicity) – транзакция атомарна (либо выполняются все содержащиеся в трансакции команды, либо не выполняется ни одна из них).

  • Согласованность (consistency) – транзакции защищают базу данных согласованно. Это означает, что транзакции переводят одно согласованное состояние базы данных в другое без обязательной поддержки согласованности во всех промежуточных точках.

  • Изоляция (isolation) – транзакции отделены одна от другой. Это означает, что, если даже будет запущено множество конкурирующих друг с другом транзакций, любое обновление определенной транзакции будет скрыто от остальных до тех пор, пока эта транзакция выполняется. Другими словами, для любых двух отдаленных транзакций Т1 и Т2 справедливо следующее утверждение: Т1 сможет увидеть обновление Т2 только после выполнения Т2, а Т2 сможет увидеть обновление Т1 только после выполнения Т1.

  • Устойчивость (durability) – когда транзакция выполнена, ее обновления сохраняются, даже если в следующий момент произойдет сбой системы.

Обладающие такими свойствами трансакции имеют аббревиатуру ACID.