2

我如何压缩 Firebird 2.1 数据库,就像我们在 MS Access 中所做的一样(丢弃已删除的数据,重新制作索引等)?

有办法吗?

谢谢!

4

3 回答 3

3

通常不需要压缩 Firebird 数据库:请参阅关于垃圾收集和名为“扫描”的自动(每个数据库可配置)操作的 fb 发行说明。简而言之,当删除记录或释放最旧的记录版本时,fb 会重用页面中的空间,仅当可用空间变得太小时(即低于定义的百分比)时才要求磁盘空间块。默认情况下,在预定义数量的已提交事务后执行扫描,但这是一项昂贵的任务。备份和恢复必须作为优化和收缩的最后手段,因为这也会重建和优化索引,但通常不需要这样做,因为有重建索引的命令和工具。

于 2010-09-28T15:56:12.137 回答
1

唯一的方法是进行备份和还原。

于 2010-09-21T13:08:54.817 回答
1

来自官方常见问题

许多用户想知道为什么当他们从数据库中删除大量记录时他们没有恢复磁盘空间。

原因是它是一项昂贵的操作,它需要大量的磁盘写入和内存 - 就像对硬盘分区进行重新碎片一样。这些数据使用的数据库部分(页面)被标记为空,Firebird 将在下次需要写入新数据时重用它们。

如果磁盘空间对您很重要,您可以通过备份然后恢复来取回空间。由于您正在进行备份以立即恢复,因此明智的做法是使用“禁止垃圾收集”或“不使用垃圾收集”开关(gbak 中的 -G),这将使备份变得更快。垃圾收集用于清理数据库,由于它是一项维护任务,因此通常与备份一起完成(因为无论如何备份都必须经过整个数据库)。但是,您很快就会放弃该数据库文件,并且无需清理它。

于 2013-02-24T18:45:42.657 回答