Здравствуйте, SQE, Вы писали:
SQE>В онлайновом журнале повторения храняться записи о подтвержденных, но еще не записанных транзакциях.
Что такое "подтвержденная, но еще не записанная транзакция" ? Подтвержденная транзакция — это транзакция уже завершившаяся COMMIT-ом.
А что значит не записанная ? И куда не записанная ? В redo log ? Так это redo log buffer cache как я понял.
SQE>В сегментах отката содержатся данные, о еще не подтвержденных транзакциях.
Что за данные ?
Например при такой транзакции (псевдокод):
начало транзакции;
select .... from t1;
insert ... values(...) t2;
delete t3 where ....;
update t4 set .... where ...;
какая именно информация попадет в rollback segment ?
Далее, из твоих утверждений, что:
1) все что попало в redo log, прошло (когда-то) через rollback segments.
2) все что "записалось" (опять же вопрос — куда ?) удаляется из redo log-а
Это так ?
Далее — redo log -и можно автоматически архивировать. Зачем это может понадобится. Какой смысл в архивировании подтвержденных, но не записанных транзакциях ? Не проще из "записать" ?
SQE>При восстановлении базы, после применения изменений зарегистрированных в журнале повторения, используются записи сегмента отката для отката неподтвержденных транзакций.
Ага ? Как я понял из этого утверждения — "записанная" запись все-таки не удаляется из redo log, а продолжает храниться там. Так ?
То есть, в моем понимании redo log — это просто журнал всех изменений совершенных с БД. И в нем хранится информация о том, что в такой то момент времени такой-то экстенд был изменен с такого то значения, на такой. О том, что в этот момент времени был удалена такая-то запись из такого-то сегмента. Так ?
На основании твоих замечаний и своих предположений попробую с формулировать след. утверждение:
MS SQL хранит всю информацию о транзакциях (как завершившихся, так и нет) в одном файле — transaction log, в то время как в Oracle информация о завершенных и незавершенных транзакциях хранится отдельно в разных структурах.
Это так ?
... << RSDN@Home 1.1.3 beta 2 >>