hsqldb - 尽管有检查点,但 lobs 文件大小仍在增加
问题描述
我正在构建一个交通信息服务,它轮询上游消息源并将它们存储到在服务器模式下运行的 HSQLDB 数据库中。
上游源每 5-60 分钟轮询一次。消息存储为 CLOB,如果它们过期或被替换,则将其删除。
每分钟一个任务删除已过期的消息,执行一个DELETE
语句,后跟一个CHECKPOINT DEFRAG
.
所有这些操作都发生在永久运行的 Java 应用程序中。该数据库也是永久开放的。
消息的数量(及其组合大小)相当稳定。但是,有许多更改可能导致消息被新消息替换。
正如我相信从其他 SO 答案中所理解的那样,已删除 LOB 的空间被释放以供新 LOB 使用,并CHECKPOINT
告诉 HSQLDB 现在是进行这种垃圾收集的好时机。
但是,LOB 文件不断增长。在大约一小时的时间里,它的大小从 184 MByte 增长到了 368 MByte,即大约翻了一番。似乎空闲空间没有得到重用,但更多的空间被占用了。
难道我做错了什么?如果是这样,是什么?
解决方案
推荐阅读
- javascript - 使用循环js创建输入文本
- java - 使用 hprof 分析 WebSphere 以获取 CPU SAMPLES 输出
- python - asyncio: RuntimeError 这个事件循环已经在运行
- python - 用于时间序列预测的 LSTM 模型预测不规则值,如锯齿
- microsoft-graph-api - Microsoft Graph webhooks - subscribe to user calendars
- c# - 如何在 C# 中从 datagridview 更新项目
- office-js - OfficeJS Addin office-store 验证仅在 office online 中失败
- angular - Investigate activatedRoute observables using rxjs operators
- php - 尝试使用表单插入数据但出现未定义变量错误
- ruby-on-rails - after_save callback of act_as_nested_set model lead to SystemStackError