2010-01-11 64 views
2

这一个对我来说很有趣 - 尽管几乎没有任何标题。我已经使用了火鸟很长一段时间,但直到最近才注意到一个有趣的行为。火鸟数据库不断变大

我正在使用嵌入式firebird 1.5,并注意到如果我填充数据库的blobs(可以说10mb的价值),数据库的大小增加。然后,我可以删除数据库中的所有字段,并且数据库的文件大小保持其扩展大小。目前它在20mb并且完全是空的。我知道firebird已经将它嵌入到了它的体系结构中(用于快速索引,速度问题等),但我一直认为它会降低到原来的约2mb默认值。

有没有人有任何建议'放气'的文件大小?原因是这是一个空间意识问题。如果我有很多空间可以工作,我不会在意。然而情况并非如此,我需要的东西尽可能最优化

谢谢!

+0

这对SO来说很好,通过点击答案旁边的空白复选标记来接受您认为有用的答案。 – 2010-01-17 13:11:27

+0

好吧,对不起,新的 – Liam 2010-01-20 20:59:37

回答

4

释放Firebird数据库中未使用空间的唯一方法是进行备份,然后立即恢复该备份(参考:Firebird FAQ)。

Here是一个很好的技术解释,为什么这是如此。

请注意,火鸟将重用当前未使用的空间 - 即。如果现在再放10MB的数据库,数据库不应该增长到30MB。

+0

感谢您的答案 - 但如果数据库的大小是由于使用。比如存储值或blob。用户使用该数据库一段时间,如果它不需要20mb,我希望它的大小恢复到2mb默认值(保留所有信息)。那有意义吗?也许我没有遵循你的逻辑? – Liam 2010-01-11 23:13:30

+0

更新了我的答案。基本上,除了备份/恢复之外没有办法。你可以把它写成每晚/每周的任务吗? – Blorgbeard 2010-01-11 23:19:57

+0

谢谢!我已经阅读了页面/减号/提到备份/恢复的底部。尽管如此,这些指针在寻呼系统中有多复杂。感谢您花费时间和精力发布信息,并将我指向文章的备份/恢复部分。 – Liam 2010-01-11 23:34:33