Re: why do you apply undo before redo?

From: Jan Hidders <jan.hidders_at_REMOVETHIS.pandora.be>
Date: Sun, 18 Apr 2004 21:25:26 GMT
Message-ID: <anCgc.77108$TZ5.5226557_at_phobos.telenet-ops.be>


Ryan wrote:

> "Jan Hidders" <jan.hidders_at_REMOVETHIS.pandora.be> wrote in message
> news:Cwzgc.76768$nU5.5168180_at_phobos.telenet-ops.be...
> 

>>Ryan wrote:
>>
>>>"Jan Hidders" <jan.hidders_at_REMOVETHIS.pandora.be> wrote in message
>>>news:Isugc.75959$VI4.5039222_at_phobos.telenet-ops.be...
>>>
>>>>Ryan wrote:
>>>>
>>>>>I'm reading a generic database textbook and it states that when
> 
> databases
> 

>>>>>are recovering undo is applied before redo.
>>>>
>>>>Any specific reason why you would like the title of the book to remain a
>>>>secret? :-)
>>>
>>>I didn't want to type it. Its 'Database Systems Concepts'. The one used
>>>everywhere.
>>
>>Good book. But I don't know many universities around here that use it.
>>Would you happen to have any statistics on that?
> 
> 

>>>>>It doesn't say why. Does anyone know?
>>>>
>>>>Because some of the operations of the transactions of the UNDO list
>>>>might conflict with those in the REDO list. So if you did the undo-phase
>>>>last you might be erasing the result of some operations that you first
>>>>did in the redo-phase.
>>>
>>>don't quite get this. Oracle applies redo, then rollsback all open
>>>transactions? This is why that statement intrigued me since one database
>>>system does it the opposite way.
>>>
>>>Not quite sure how the undo can conflict. You roll forward and apply all
>>>change vectors, then rollback and remove what was never committed.
>>
>>Suppose that in the REDO list there is a transaction with an operation
>>that changed a field from "yes" to "no", and in the UNDO list there is a
>>transaction with also an operation that changed the same field also from
>>"yes" to "no". Then what is the result of the field after REDO - UNDO
>>and what after UNDO - REDO?\
> 
> I do not see why this matters. It does not matter what the state of the
> tuple is during recovery, only when it is complete.

That is what I'm talking about. What is the result of the field after recovery has completed in the two cases? The first case being first REDO and then UNDO and the second being the reverse.

> I'm at a loss on your statement. Also, oracle does it the opposite way?

I don't know enough about Oracle to comment on that.

  • Jan Hidders
Received on Sun Apr 18 2004 - 23:25:26 CEST

Original text of this message