从 HSQLDB LOBS 文件增长中恢复的最佳方法

Posted

技术标签:

【中文标题】从 HSQLDB LOBS 文件增长中恢复的最佳方法【英文标题】:Best way to recover from HSQLDB LOBS file growth 【发布时间】:2016-06-06 06:19:01 【问题描述】:

我有一个包含很多 LOB 的 HSQLDB 数据库。 LOB 文件已经增长到导致机器崩溃的程度。

我在 LOBs 文件中有一些可以删除的数据。

处理这种情况的最佳方法是什么?执行备份将仅导出实际的 LOB,还是将文件与内部空间一起导出? (即整个稀疏 LOB 文件)

我尝试过 CHECKPOINT DEFRAG,但这似乎在 2.3.2 中不起作用,删除未使用的 LOB 后 LOB 文件继续增长。

【问题讨论】:

【参考方案1】:

在 2.3.4 版中,检查点会导致将 .lobs 文件截断为数据库表中引用的最后一个 LOB。文件中的任何空白空间都将被重新用于未来的 lob。

如果数据库中的live lobs相对较少,可以将带有LOBs的列类型转换为VARCHAR或VARBINARY,执行CHECKPOINT,然后SHUTDOWN,然后删除.lobs文件。然后您可以重新打开并将列类型转换回 CLOB 和 BLOB。

【讨论】:

以上是关于从 HSQLDB LOBS 文件增长中恢复的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

使用 HSQLDB 清除 .lobs 文件的推荐方法

HSQLDB - 如何设置 .lobs 文件编码?

Quartz Scheduler +HSQLDB 巨大的 .lobs 文件。尺寸永远增加

HSQLDB:为现有数据库启用 LOB 压缩

无法从 hsqldb 日志文件恢复

HSQL 数据库大小