Subject RE: [firebird-support] Housekeeping - Super Server?
Author Helen Borrie
At 09:12 AM 14/03/2005 +1100, Roy Holme wrote:

> > In classic, one might want to set housekeeping to 0 to prevent a
> > cleanup from happening when you don't want to deal with a slow down.

You would set the Sweep Interval to zero to prevent sweeps from happening
when you don't want a sweep. But this doesn't disable garbage collection,
which is a separate process.

> > Of course, one runs gfix -sweep to force one at a good time.

Recommended regular housekeeping, anyway, even if auto-sweeping is enabled
(by having a sweep interval > 0). If your applications manage transactions
well, auto-sweeping will never occur.

> >
> > If the super server has a special garbage collection thread going
> > anyway, does this philosophy make sense anymore. The last thing one
> > wants to happen is for the database to freeze up when you are going
> > through a very active period.

A "heavy" sweep will slow things down. But, if your "gap" never reaches
the threshold that would cause a sweep to kick off, then a sweep is never
kicked off.

Background GC, on the other hand, runs in a background thread whenever the
opportunity arises. Don't confuse it with sweep. Apps that keep
transactions running for long periods will cause large build-ups of garbage
that the GC thread can't touch. Under those conditions, the sweep
threshold will be reached periodically and sweep will kick in and try to
clean up. How long it takes to get to this point is determined by how much
it was able to clean up last time. Neither sweep nor GC will clean up
garbage from transactions that are still active.

>Alan McDonald wrote:
>it's the same with SS - set sweep interval to 0 and do it yourself

Talking about sweeping only here.

Classic is different to SS with regard to GC. Classic uses the
"co-operative GC" approach: the next SELECT on a row that has garbage
available will take the "hit" of garbage-collecting what the earlier
transaction left behind.

./hb