Subject Re: Restart fixes performance issues
Author Adam
--- In, "rodrigogoncalves"
<keitarobr@g...> wrote:
> >
> > Don't use "commit retaining" without the occasional Commit either.
> >
> That is a problem... we're talking about a really huge application
> here... good part is legacy code which uses BDE, and newer code uses
> IBX with CommitRetaining, since from what we've read from the docs
> when we started using IBX, that was no difference in performance from
> using CommitRetaining instead of Commit.
> Regards
> Rodrigo


CommitRetaining is just as bad as not committing (in garbage terms).
When you specify CommitRetaining, after the transaction is committed,
a new transaction is started but with the same context, so instead of
the oldest interesting transaction advancing, it has to wait until you
do a real commit.

Sweep and Garbage collection cant do anything to oldest interesting if
there is a transaction that is pinning it at that value.

There is unfortunately no simple way of tracing such behaviour through
your application. If you have a test database to use, you can write
yourself a shell that creates and commits a new transaction every 100
ms or so, then look for particular behaviour that sticks the transactions.