HSQLDB 缓存过于激进?

Posted

技术标签:

【中文标题】HSQLDB 缓存过于激进?【英文标题】:HSQLDB caching too aggressively? 【发布时间】:2013-05-23 16:27:03 【问题描述】:

在我的应用程序中,我需要能够关闭所有 HSQL 连接、删除数据库文件,然后打开创建新数据库的新连接。我在磁盘上使用缓存表。

我发现 HSQL 正在记住旧数据库的内容——即使我已经从磁盘中删除了这些文件并建立了新的连接!我已经在 org.hsqldb.jdbc.JDBCConnection 类的构造函数上放置了断点,以验证我正在获取新的 Connection 对象(我是)。

如果我停止并启动该进程,则 HSQL 会正确“忘记”旧数据库并重新启动,但这是一个服务器端进程,我无法轻松停止和启动。

到目前为止,我发现的唯一解决方案是对 HSQL 数据文件的路径进行一些调整,这样它就不会尝试使用上次连接中的缓存数据。我希望有一些方法可以在 HSQL 中调用来清除缓存,这样新的连接就会开始时不会从旧数据中记住任何数据。

【问题讨论】:

【参考方案1】:

您应该关闭数据库。这会关闭所有打开的连接并清除缓存。

使用了 SQL 语句,SHUTDOWN。

您可以在关机后删除文件。

【讨论】:

以上是关于HSQLDB 缓存过于激进?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 HsqlDB 上将 MEMORY 表转换为 CACHED 表?

配置HSQLDB大存储

截断需要太多时间 hsqldb

如何对 hsqldb 中的大表执行高效的 group by / sum 聚合?

为啥在嵌入式 HSQLDB 上运行更新查询会消耗大量内存?

是否应该序列化对存储在 hsqldb 数据库中的文件的访问?