June 14th, 2011, 04:58 AM
Firebird gets slower and slower, then crashes
We have a firebird 1.5 database that is constantly synchronising data from another source. This means lots of update statments are being performed.
A single sync involves updating around 25,000 records every 15mins.
This process starts quite fast, it complete the 25,000 updates in around 60seconds (during which CPU is at 100%) Each sync process gradually gets slower and slower. The firebird process uses more and more memory (but only around 1GB in total). The database also grows larger and larger when it reaches around 1.2GB it crashes with a deadlock error.
I understand the database growth, because presumably an update leaves an old copy of the record in the database. What is causing the slowdown and the memory usage?
Is there anything I can do to reduce the slowdown, and the crashing?
June 20th, 2011, 06:51 AM
I think that there is an active transaction which is not commited. And Firebird keep information between oldest active transaction and current transaction. If you were using FB 2.1 or 2.5 you could see active connections trough MON tables, but now you must check your code for some forgotten transaction. I've seen how Firebird release 800MB of memory when I've closed an application with similar problem after two days of continues working.