2010-01-11 87 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