LF>Когда сервер созраняет новые значения в логе, неужели при изменении блобов там они записываются целиком? AS>Все зависит от типа модели восстановления, если речь идет о MS SQL. AS>При full recovery model и simple recovery model они просто записываются. При bulk recovery model они не записываются. AS>Операции redo и undo это понятно. А вот лог redo это что-то новое для меня. Ааа... Сорьки, не догнал сразу, мне опять за внимательность незачет.. На самом деле способов организации лога примерно три: Есть Undo Log: Сначало все пишем в базу, потом, после коммита в лог, если в лог commit не успели, значит все откатываем взад беря старые данные из лога. Недостатки очевидны, слишком много IO операций, тоесть каждая транзакция должна быть записана на диск не только в логе, но и в самой базе. Есть Redo Log: Все пишем в лог, но в базу до commit'а мы записать ничего не можем, так как вслучае сбоя старые значения незафиксированных транзакций неоткуда будет взять. Отсюда могут быть проблемы с памятью при больших транзакциях или при большем количестве транзакций. Ну и есть Redo/Undo: В этом случае в логе хранится два значения старое и новое, соответственно в случае сбоя для всех закоммиченных транзакций накатываем новое значение, для всех незакоммиченых старое. |