首页 文章

HSQLDB和.lobs文件大小

提问于
浏览
5

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

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

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

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

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

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

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

非常感谢!

亲切的问候,安德烈亚斯

1 回答

  • 1

    这个是正常的 .

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

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

    更新:

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

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

相关问题