Subject | Re: [firebird-support] Re: NBackup freezes OIT ? |
---|---|
Author | Ann Harrison |
Post date | 2013-04-17T18:33:19Z |
Michal,
Gbak dumps the current state of data on backup and creates an entirely new
database without old versions on restore. As a result, there are no
"interesting" old versions in a gbak-restored database. You'll also note
that the transaction numbers are reset, so the next transaction is
something less than 20 - depends slightly on options you take on restore.
Nbackup takes physical snapshots of pages as they change. It wouldn't
recognize a record or a transaction if it fell over one. So a database
restored from nbackup is physically identical to the database it
reproduces. Transaction numbers stay the same, old versions stay in place,
and any "interesting" old versions stay too.
Old versions of records are removed in the normal course of running the
database, either by a garbage collect thread, or by cooperative garbage
collection, or by gbak (without the -g), or by sweep. Only sweep resets
the OIT because it knows for certain that it has checked every record in
the database and removed anything left by a rolled-back transaction.
Good luck,
Ann
[Non-text portions of this message have been removed]
>As Sean said, gbak and nbackup are completely different.
> The OAT moves freely, it's really just the OIT that is blocked. I still
> don't understand why it stops just because of database restore (only
> through nbackup, gbak is ok), but if it's not going to cause a performance
> penalty, it's not an important issue.
>
>
Gbak dumps the current state of data on backup and creates an entirely new
database without old versions on restore. As a result, there are no
"interesting" old versions in a gbak-restored database. You'll also note
that the transaction numbers are reset, so the next transaction is
something less than 20 - depends slightly on options you take on restore.
Nbackup takes physical snapshots of pages as they change. It wouldn't
recognize a record or a transaction if it fell over one. So a database
restored from nbackup is physically identical to the database it
reproduces. Transaction numbers stay the same, old versions stay in place,
and any "interesting" old versions stay too.
Old versions of records are removed in the normal course of running the
database, either by a garbage collect thread, or by cooperative garbage
collection, or by gbak (without the -g), or by sweep. Only sweep resets
the OIT because it knows for certain that it has checked every record in
the database and removed anything left by a rolled-back transaction.
Good luck,
Ann
[Non-text portions of this message have been removed]