Java H2数据库>;如何在运行时压缩/真空? 标题

Java H2数据库>;如何在运行时压缩/真空? 标题,java,h2,Java,H2,在我的一个项目中,我使用h2数据库和文件存储 根据h2 db 数据库文件中的空白空间会自动重新使用。关闭数据库时,默认情况下,数据库会自动压缩200毫秒 每次删除或更新行时都会创建空白。不幸的是,在运行时,数据库文件不断增长 在讨论中,建议备份数据库,然后再次恢复。 但是,我正在寻找一种解决方案,在运行时压缩/清空数据库,而不关闭数据库。有没有办法做到这一点 当然,迁移到Postgres这样的数据库也是一种选择。但是,我的项目应该很容易安装,因此有必要将其集成到安装程序中。一般来说,添加专用数据

在我的一个项目中,我使用h2数据库和文件存储

根据h2 db

数据库文件中的空白空间会自动重新使用。关闭数据库时,默认情况下,数据库会自动压缩200毫秒

每次删除或更新行时都会创建空白。不幸的是,在运行时,数据库文件不断增长

在讨论中,建议备份数据库,然后再次恢复。 但是,我正在寻找一种解决方案,在运行时压缩/清空数据库,而不关闭数据库。有没有办法做到这一点


当然,迁移到Postgres这样的数据库也是一种选择。但是,我的项目应该很容易安装,因此有必要将其集成到安装程序中。一般来说,添加专用数据库会增加一些开销。

您知道数据库文件不断增长的原因吗?除非你总是添加比删除更多的数据,否则情况就不应该如此。嗨,托马斯。谢谢你的提问!问题实际上是添加和更新。H2db追加到文件的末尾,但文件中的“已删除”空间不会被重用。这是一个限制。你有一个简短的、自包含的、可编译的问题示例()吗?嗨,托马斯。我将在大约10天内提供准确的数据。今晚我要离开欧洲几天,所以很遗憾我不能提前提供。谢谢我还没有分析测试程序,但上限很可能是事务日志大小。您可以使用set MAX_LOG_SIZE 4或通过追加将其设置为较低的值;数据库URL的最大日志大小=4(另请参见文档)。