HSQLDB 在使用嵌套查询并且数据库处于只读模式时触发 OutOfMemoryError

Posted

技术标签:

【中文标题】HSQLDB 在使用嵌套查询并且数据库处于只读模式时触发 OutOfMemoryError【英文标题】:HSQLDB triggers OutOfMemoryError when using nested queries and the DB is in read-only mode 【发布时间】:2019-02-22 06:26:46 【问题描述】:

对于具有大约 300000 个查询的复杂用例,我们在只读模式下使用 HSQLDB。不久之后,我们遇到了OutOfMemoryError

问题是子选择查询和只读的组合,所有其他组合都可以正常工作:

               simple select   nested select
DB read only   works           OOM
DB read/write  works           works

Here 是一个简单的复制器,包括复制器的(只读)数据库。

要切换到读/写数据库,只需删除 repo.properties 中的“readonly=true”行并再次运行测试。

我怀疑RowStoreAVLHybridclass 是问题的一部分,因为该类仅用于子选择+只读情况。

知道除了将数据库切换为读/写之外我还能做什么,我想不惜一切代价避免吗?

【问题讨论】:

【参考方案1】:

没有解决此错误的方法。它已被解决,并已将修复提交给 HSQLDB 2.5.0 版的 dev-three 代码分支。

【讨论】:

以上是关于HSQLDB 在使用嵌套查询并且数据库处于只读模式时触发 OutOfMemoryError的主要内容,如果未能解决你的问题,请参考以下文章

HSQLDB:优先选择查询而不是插入查询

在 HSQLDB 中截断模式

嵌套传递查询?

如何删除 hsqldb 中的默认数据库/模式

hsqldb数据库要怎么用

是否无法将数据库/目录导出到 HSQLDB 中的单个文件