我正在使用Java中的HSQLDB數據庫,它將文件存儲在定義爲BLOB的列中。HSQLDB和.lobs文件大小
當我向表中添加一個帶有文件/ BLOB的錶行時,.lobs文件會增加文件/ BLOB的大小。當我添加另一個文件到我的表時,它又增加了大小(2 x BLOB大小)。
因此,我實現了一個迭代10次的測試方法,並將相同的文件寫入我的表並在插入後立即刪除它。
現在,我的.lobs文件是10 x文件大小...即使我刪除了包含該文件的所有錶行。
我試着執行CHECKPOINT DEFRAG,但沒有任何反應。 .lobs文件保持相同的文件大小。
這使我很擔心,因爲我正在創建的webapp會將很多文件寫入我的數據庫,即使帶有文件(BLOB)的錶行將在一段時間後被刪除,.lobs文件將始終增加或保持相同的大小,並最終吃掉我所有的磁盤空間。
我是否缺少一些設置,或者這是HSQLDB和BLOB的預期行爲?
非常感謝!
親切的問候, 安德烈亞斯
嗯,我做了另一個測試。插入一個BLOB,然後刪除它。這是1000次迭代和BLOB大小在哪裏〜8 MB。 結果:〜9 GB事件的.lobs文件,雖然我的數據庫中沒有數據。 – andreas78
...繼續... 我在雲端購買我的服務器插槽,每MB磁盤花錢我真的不喜歡.lobs文件在我的數據庫爲空時分配9 GB的數據。 我很簡單,在這種情況下,.lobs文件將永遠不會超過8 MB,因爲我添加了BLOB,然後刪除了相同的BLOB。當我從不同時存儲超過8 MB的文件時,爲什麼增加超過8 MB的.lobs文件? – andreas78
使用H2運行完全相同的測試套件後,我可以聲明以下內容: H2在數據庫文件中插入1000 x 8 MB文件時使用最大值〜1 GB。 H2在添加時和在刪除後立即在db文件中使用〜68 MB。 H2在刪除數據庫/表時會減小數據庫文件的大小。 這讓我想到如果我想減少磁盤空間使用量,H2是更好的選擇。 – andreas78