HSQLDB和.lobs文件大小

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

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

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

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

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

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

我错过了一些设置还是这是HSQLDB和BLOB的预期行为?

非常感谢!

亲切的问候,安德烈亚斯

这个是正常的。

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

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

更新:

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

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