紧凑型火鸟 2.1 数据库

Posted

技术标签:

【中文标题】紧凑型火鸟 2.1 数据库【英文标题】:Compact Firebird 2.1 Database 【发布时间】:2011-04-15 04:53:02 【问题描述】:

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

有办法吗?

谢谢!

【问题讨论】:

另见***.com/questions/1662431/… 【参考方案1】:

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

【讨论】:

巴西人,爱德华多?我也是!感谢您的建议! 是的,我是。欢迎联系我。【参考方案2】:

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

【讨论】:

【参考方案3】:

来自official faq

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

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

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

【讨论】:

以上是关于紧凑型火鸟 2.1 数据库的主要内容,如果未能解决你的问题,请参考以下文章

火鸟数据阅读器

拆分火鸟数据库文件

C# 操作FireBird(火鸟)数据库

C# 操作FireBird(火鸟)数据库

火鸟默认字符集

转换为 ActiveRecord 查询(火鸟数据库)时导致错误的原始 SQL 查询