Because you can have many connections to one database and many actions trough those connections with different transactions at the same time, Firebird keeps information about all active transactions so when one transactions is commited to know what data to show after that. And with every new active transaction Firebird makes a copy of the information about all currently active transactions. So when one transaction is active for too long and new transactions continue to appear this drop the performance, because Firebird needs to keep too much data. In the database header page there is an information about the oldest active transaction number and the next transaction number. If the difference between them is big this mean that there is something wrong and it's good idea to check how the database is used.
Originally Posted by hpLukasz