Subject | Garbage Collection |
---|---|
Author | dr_john_mp |
Post date | 2007-07-05T08:16:42Z |
Running Firebird 2 Superserver on a Linux machine with sweep interval
at the default 20,000. As the number of programs/users has grown
significantly should probably have changed to classic by now, but
thats another issue.
We have been doing some work on transacions to minimise the difference
between the oldest transaction/snapshot and the next transaction
(after someone left a program open on a terminal server session for
several days and the system slowed to a crawl when the differences
approached 2 million!!).
We now have a program that check the differences between the next
transaction and the oldest, oldest active and oldest snapshot at
intervals and plots them in real time on a graph. It would be nice if
you could read more details of these transactions from the server
itself, I'm adding code to each application to periodically write
details of their oldest transaction into a central database so we can
trap offending programs.
We have a couple of programms that run overnight (nothing else running
(now)) that pull in data from another system. The first of these has
a problem because the above differences increase continually through
the time the program runs to well over the 20,000 sweep interval.
Somwhat surprisingly when the program closes the differences remain
high, even though there is no activity on the database. 20 minutes
later a second program starts and the difference between all 3 values
drops to almost zero.
Am I right in saying that garbage collection is triggered by the
difference when the next transaction starts, rather than when the
oldest ones close ?
at the default 20,000. As the number of programs/users has grown
significantly should probably have changed to classic by now, but
thats another issue.
We have been doing some work on transacions to minimise the difference
between the oldest transaction/snapshot and the next transaction
(after someone left a program open on a terminal server session for
several days and the system slowed to a crawl when the differences
approached 2 million!!).
We now have a program that check the differences between the next
transaction and the oldest, oldest active and oldest snapshot at
intervals and plots them in real time on a graph. It would be nice if
you could read more details of these transactions from the server
itself, I'm adding code to each application to periodically write
details of their oldest transaction into a central database so we can
trap offending programs.
We have a couple of programms that run overnight (nothing else running
(now)) that pull in data from another system. The first of these has
a problem because the above differences increase continually through
the time the program runs to well over the 20,000 sweep interval.
Somwhat surprisingly when the program closes the differences remain
high, even though there is no activity on the database. 20 minutes
later a second program starts and the difference between all 3 values
drops to almost zero.
Am I right in saying that garbage collection is triggered by the
difference when the next transaction starts, rather than when the
oldest ones close ?