Subject Re: [firebird-support] Re: Awaiting Garbage Collector
Author Carlos H. Cantu
Re: [firebird-support] Re: Awaiting Garbage Collector Yes, if you have an open transaction, usually you are holding the garbage collection. The exception is if your open transaction is using isolation ReadCommited and is marked as ReadOnly. In such case, the transaction starts pre-commited, so there is no blocking of GC.

This is how Versioning/MVCC works.

PS: Probably the reason for Sinnatica showing increasing numbers, even when you have just one transaction open in your app, is because Sinnatica needs to start a new transaction every time it needs to refresh its statistics.

Firebird Performance in Detail - -

Regarding the Awaiting GC issue I've done another test:

1- Connect to the database in a test environment, isolated from the rest of users from production environment. with IBExpert or another database manager. Only one connection.

2- Monitor tha database with Sinatica Monitor to get number of active transactions, attachments and statements. At this moment only 1 connection is showed in Sinatica. 2 statements that are querys to system tables, I supose form IBExpert connection, 0 awaiting GC and 1 awaiting Sweep.

3- Run a query SELECT * FROM CALENDAR WHERE EVENT_ID=132465 which only returns a record. I did not COMMIT that.

4- Now SINATICA shows how AWAITING GC is increasing by 1 or 2 every second. In a minute it shows more than 100 Awaiting GC.

5- COMMIT and now SINATICA shows AWAITING GC is again 0.

I did the same thing with EMS SQL MANAGER and the result is the same. Leaving an interesting transaction on a single record table generates a big amount of garbage.

Is that normal?