Compact Firebird 2.1数据库

时间:2010-09-21 13:06:17

标签: firebird firebird2.1

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

有办法吗?

谢谢!

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

唯一的方法是进行备份和恢复。

答案 2 :(得分:1)

来自official faq

  

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

     

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

     

如果磁盘空间对您来说至关重要,您可以获取空间   做备份然后恢复。因为你正在做备份   立即恢复,使用“抑制垃圾收集”是明智的   或“不要使用垃圾收集”开关(-G在gbak中),这将使   备份变得更快。垃圾收集用于清理你的垃圾   数据库,因为它是一项维护任务,它通常是一起完成的   备份(因为备份必须通过整个数据库)。   但是,你很快就会放弃那个数据库文件,而且没有   需要清理它。