问题描述
我正在构建一个交通信息服务,它轮询上游消息源并将它们存储到以服务器模式运行的 HsqlDB 数据库中。
上游源每 5-60 分钟轮询一次。消息以 CLOB 形式存储,如果过期或被替换,则将其删除。
任务每分钟删除已过期的消息,执行 DELETE
语句后跟 CHECKPOINT DEFRAG
。
所有这些操作都发生在永久运行的 Java 应用程序中。数据库也永久开放。
消息的数量(及其组合大小)相当稳定。但是,有许多更改可能会导致消息被新消息替换。
我相信已经从其他 SO 答案中了解到,已删除 LOB 的空间被释放以供新 LOB 使用,CHECKPOINT
告诉 HsqlDB 现在是进行此类垃圾收集的好时机.
但是,LOB 文件不断增长。在大约一个小时的时间里,它的大小从 184 MB 增加到 368 MB,即大约翻了一番。似乎可用空间没有得到重用,但更多的空间被占用了。
我做错了吗?如果是,那是什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)