我正在使用 Firebird,但最近数据库增长非常严重。 确实有很多删除语句在运行,还有更新/插入,数据库文件大小增长得非常快。 在大量删除记录后,数据库大小并没有减少,更糟糕的是,我感觉查询实际上变慢了一点。 为了解决这个问题,涉及了每日备份/恢复过程,但由于它是时候完成了 - 我可以说使用 Firebird 真的很令人沮丧。
欢迎提出任何关于变通方法或解决方案的想法。
另外,我正在考虑切换到 Interbase,因为我从 friend 那里听说它没有这个问题 - 是这样吗?
最佳答案
我们在生产环境中有很多关于 Firebird 的庞大数据库,但从未遇到过数据库增长的问题。是的,每次删除或更新记录时,都会在文件中保留旧版本。但迟早会有垃圾收集器将其清除。一旦两个进程相互平衡,数据库文件将只随着新数据和索引的大小而增长。
作为防止数据库巨大增长的一般预防措施,尽量使您的事务尽可能短。在我们的应用程序中,我们使用一个只读事务来读取所有数据。此交易在整个应用程序生命周期内都是开放的。对于每批插入/更新/删除语句,我们使用简短的单独事务。
过时的索引统计数据可能会导致数据库操作变慢。您可以在此处找到如何重新计算所有索引统计信息的示例:http://www.firebirdfaq.org/faq167/
关于sql - Firebird 备份还原令人沮丧,有没有办法避免它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6224760/