Subject RE: [firebird-support] Re: NBackup freezes OIT ?
Author Leyne, Sean

> --- In, Ann Harrison <aharrison@...>
> wrote:
> > >
> > > The Oldest Interesting Transaction (OIT) is the oldest transaction
> > > in the
> > system that is not committed. Ordinarily, that's a transaction that
> > rolled back and could not be cleaned up automatically. Only sweep can
> change the
> > OIT. The Oldest Active Transaction should move freely, unless you've got
> > a long running transaction. The OAT blocks garbage collection and
> > causes performance problems. The OIT is much less interesting. It
> > does require that every transaction have access to a bitmap of
> > transaction states between the OIT and the Next Transaction, but
> > that's much less of an issue than it was when machines had memory
> measured in megabyte rather than gigs.
> > So, neither a bug nor a features. Just an artifact.
> Ann, thanks for the explanation. 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 and nbackup use completely different algorithms/approaches to backups, so to expect that they would have the same effect on OIT is incorrect.

Further, if you are running the SuperServer engine then garbage collection will be done by the engine thru a background process, which will be "triggered" as soon as the engine see an old row versions which can be deleted. Gbak can prompt this cleanup because it reads the individual rows of the database. Nbackup works at the database page level, not the row, so no cleanup is triggered.