Здравствуйте, 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 >>