sql - Firebird 备份还原令人沮丧,有没有办法避免它?

标签 sql database backup firebird interbase

我正在使用 Firebird,但最近数据库增长非常严重。 确实有很多删除语句在运行,还有更新/插入,数据库文件大小增长得非常快。 在大量删除记录后,数据库大小并没有减少,更糟糕的是,我感觉查询实际上变慢了一点。 为了解决这个问题,涉及了每日备份/恢复过程,但由于它是时候完成了 - 我可以说使用 Firebird 真的很令人沮丧。

  • 欢迎提出任何关于变通方法或解决方案的想法。

  • 另外,我正在考虑切换到 Interbase,因为我从 friend 那里听说它没有这个问题 - 是这样吗?

最佳答案

我们在生产环境中有很多关于 Firebird 的庞大数据库,但从未遇到过数据库增长的问题。是的,每次删除或更新记录时,都会在文件中保留旧版本。但迟早会有垃圾收集器将其清除。一旦两个进程相互平衡,数据库文件将只随着新数据和索引的大小而增长。

作为防止数据库巨大增长的一般预防措施,尽量使您的事务尽可能短。在我们的应用程序中,我们使用一个只读事务来读取所有数据。此交易在整个应用程序生命周期内都是开放的。对于每批插入/更新/删除语句,我们使用简短的单独事务。

过时的索引统计数据可能会导致数据库操作变慢。您可以在此处找到如何重新计算所有索引统计信息的示例:http://www.firebirdfaq.org/faq167/

关于sql - Firebird 备份还原令人沮丧,有没有办法避免它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6224760/

相关文章:

sql - 强制事务从另一个连接提交?

mysql - 如何使用 mysqlworkbench 连接到 otrs MySQL 数据库

mysql - Heroku 中的 unix_socket 路径?

c# - 以编程方式获取sql server的默认备份路径

mysql - 使用来自 Insert 语句的值在 ON DUPLICATE KEY 中选择

javascript - SQL node.js 看似有效的查询存在语法错误?

php - 无法从 mySQL 查询中获取结果以在 PHP 中显示

java - 如何获取两列的值并存入ArrayList

c - 总线错误: 10 in C

备份Redmine文件