首页 > 解决方案 > 尽管有检查点,但 lobs 文件大小仍在增加

问题描述

我正在构建一个交通信息服务,它轮询上游消息源并将它们存储到在服务器模式下运行的 HSQLDB 数据库中。

上游源每 5-60 分钟轮询一次。消息存储为 CLOB,如果它们过期或被替换,则将其删除。

每分钟一个任务删除已过期的消息,执行一个DELETE语句,后跟一个CHECKPOINT DEFRAG.

所有这些操作都发生在永久运行的 Java 应用程序中。该数据库也是永久开放的。

消息的数量(及其组合大小)相当稳定。但是,有许多更改可能导致消息被新消息替换。

正如我相信从其他 SO 答案中所理解的那样,已删除 LOB 的空间被释放以供新 LOB 使用,并CHECKPOINT告诉 HSQLDB 现在是进行这种垃圾收集的好时机。

但是,LOB 文件不断增长。在大约一小时的时间里,它的大小从 184 MByte 增长到了 368 MByte,即大约翻了一番。似乎空闲空间没有得到重用,但更多的空间被占用了。

难道我做错了什么?如果是这样,是什么?

标签: hsqldbfilesize

解决方案


推荐阅读