Cтраница 4
СУБД должна уметь восстанавливать согласованное состояние базы данных после любых аппаратных и программных сбоев. Для восстановления после сбоев СУБД использует журнал транзакций, который содержит последовательность записей, описывающих изменения в БД. [46]
Однако, как правило, в этом случае попытка выполнения действия отвергается, а пользователю возвращается некоторый индикатор неуспешного завершения - явное сообщение об ошибке или флажок состояния операции. Такая информация рассматривается как компонент состояния базы данных. [47]
Общий принцип восстановления после сбоя таков - результаты выполнения транзакций, зафиксированных до сбоя, должны присутствовать в восстановленной БД, результаты незафиксированных транзакций в ней должны отсутствовать. То есть восстанавливается последнее до сбоя согласованное состояние базы данных. Процесс восстановления основан на механизме отката незавершенных транзакций, который описан ранее. [48]
Состояние базы данных удовлетворяет схеме S, если это состояние удовлетворяет всем ее ограничениям. Схема S удовлетворяема, если существует некоторое состояние базы данных, удовлетворяющее ей. Схема S противоречива, если никакое состояние базы данных ей не удовлетворяет. Состояние базы данных DBS, непротиворечиво, если оно удовлетворяет всем ограничениям. [49]
Для определения лучшего способа выполнения транзакции используется критерий минимума объема пересылаемых данных, причем так как операции проекции и ограничения всегда выполнимы с нулевым значением указанного критерия, то осуществляется лишь выбор выгодных ( по отношению к указанному критерию) операций полусоединения. В последнем случае объем пересылаемых данных зависит от состояния базы данных. [50]
Некоторые диалекты языка SQL, например, диалект, принятый в СУБД Sybase, включают специальные операторы, позволяющие производить промежуточную фиксацию транзакции. В теле транзакции могут быть определены точки, в которых сохраняется состояние базы данных. Откат в этом случае может производиться как к одной из точек промежуточной фиксации, так и к состоянию до начала выполнения транзакции. Точки промежуточной фиксации применяются в длинных транзакциях. Они позволяют разделить ее на несколько отдельных фрагментов. [51]