HSQLDB和.lobs文件大小

时间:2012-12-17 20:00:08

标签: java size blob hsqldb

我在Java中使用HSQLDB数据库,该数据库将文件存储在定义为BLOB的列中。

当我将一个带有文件/ BLOB的表行添加到我的表时,.lobs文件的大小会增加文件/ BLOB。当我向表中添加另一个文件时,它再次增加了大小(2 x BLOB大小)。

所以,我实现了一个迭代10次的测试方法,并将相同的文件写入我的表并在插入后立即将其删除。

现在,我的.lobs文件是10 x文件大小...即使我删除了包含该文件的所有表行。

我试图执行CHECKPOINT DEFRAG但没有任何反应。 .lobs文件保持相同的文件大小。

这让我担心,因为我正在创建的webapp会将大量文件写入我的数据库,即使带有文件(BLOB)的表行将在一段时间后被删除,.lobs文件将始终增加或保持在相同的大小,并最终占用我的所有磁盘空间。

我是否遗漏了一些设置,或者这是HSQLDB和BLOB的预期行为?

非常感谢!

亲切的问候, 安德烈亚斯

1 个答案:

答案 0 :(得分:2)

这很正常。

记录所有删除的lob空格。在CHECKPOINT之后,如果插入新的lobs,则会重复使用这些空格。

在生产数据库中,存在重复的插入和删除循环。在日志运行中,.lobs文件大小不会超过数据库中lob的实际大小。

更新

.lobs文件增长的原因,直到检查点允许数据恢复,以防系统崩溃。

如果删除了lobs后文件末尾有空格,则HSQLDB版本2.3.0及更高版本会截断CHECKPOINT上的.lobs文件。