G
gus bjorklund
Guest
On Feb 13, 2019, at 5:20 AM, George Potemkin wrote: > > The -F option will not lose the changes done by the commited transactions yes, it will sometimes. consider the following scenario: 0) a transaction begins and a transaction begin note is spooled. 1) transaction creates a record. this could likely cause several block changes if a new block must be allocated, or just one if record fits in block at head of rm chain. 2) transaction creates an index entry. best case, one index block is changed, else a block split may be required. 2a) at this point, there are bi notes describing all those changes made by the transaction, probably still in memory. 3) transaction commits and a commit note is spooled. 4) lazy commit timer expires and all bi notes up to and including the commit note are flushed to disk. 5) system crashes. contents of bi and ai buffers and database buffers are lost. 6) you do a normal database restart, the redo phase will recreate the actions of any notes whose database actions did not make it to disk. what was in memory and not written to disk is recreated. the transaction will be ok. nothing lost. alternate 6) you do a database start with -F. contents of bi log are discarded. there is no redo phase. memory contents are NOT recreated and whatever was in memory is lost forever. that could be the contents of any action performed in steps 0 through 3, including the entire transaction.
Continue reading...