Re[6]: transaction log
От: LaFut  
Дата: 22.07.03 10:59
Оценка: 11 (2)
Здравствуйте, DemAS, Вы писали:

DAS>Здравствуйте, LaFut, Вы писали:


LF>>Здравствуйте, Alexey Shirshov, Вы писали:


LF>> В redo-лог пишутся новые значения — и соответственно при сбое записываются новые значения.


DAS> Имеются в виду подтвержденные изменения ?

ну да! вот приблизительное устройство
redo-log
start(t)
set(t, x, newval)
set(t, y, newval)
commit (t)
write (x, newval)
write (y, newval)
end commit (t)

то есть если сбой произошел между commit и end commit то при восстановлении просто заново выполняются действия от start до commit, если сбой произошел до commit'а, то ничего делать не надо, так как изменения были сделаны только в оперативной памяти и на диск попасть не успели.
undo-log
start(t)
(t, x, oldval)
(t, y, oldval)
commit (t)
write (x, newval)
write (y, newval)
end commit (t)

здесь если сбой произошел между commit и end commit то при восстановлении взвращаются к старым значениям.

плюс не рассматривается система checkpoints (хм, как это по русски), для очистки лога.
... << RSDN@Home 1.1 beta 1 >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.