Hi,
Unfortunately, your experiments are not useful at all, since you are
using complex GUI tools, which run background queries in the frames of
implicit transactions to get metadata information, etc.
If you really want to do clean experiments with Firebird transactions,
use only isql.exe, and run queries to your tables and MON$ tables there.
Also, look into this presentation
http://www.slideshare.net/ibsurgeon/3-how-transactionswork
Regards,
Alexey Kovyazin
IBSurgeon
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?