java - 基于 HSQLDB 的库非常慢 : trying to narrow down search for bug

标签 java caching hsqldb

我将第 3 方库集成到我的 Java 项目中。该库依赖于HSQLDB.jar。这个库——以及它附带的 HSQLDB.jar 版本——有点旧,最后一次更新是在 2010 年。它也很大。在我的代码中,我循环数据点并调用库来执行一些计算。我注意到处理所需的时间随着数据点的数量或多或少呈指数增长。例如,对于 100 分,与不使用该库的版本相比,差异很小; 2000点的时间差大约一个小时; 5000 点需要几天的时间才能完成,而没有它则需要几个小时!

我尝试将 HSQLDB.jar 更新到最新版本,但出现了一堆异常,所以我恢复到旧版本。

我运行了 hprof,它报告说总时间的很大一部分花费在 org.hsqldb.persist.Cache.cleanUp 上。我现在想做的是以某种方式缩小我对问题所在和/或问题发生位置的搜索范围。由于只有在处理大量输入数据时才会注意到这一点,因此我想在开始调试运行之前进行一些初步的“分类”。

不幸的是,目前我无法在此处显示任何代码摘录,因为我不知道哪些摘录是相关的......

所以我的问题是:它在 org.hsqldb.persist.Cache.cleanUp 中花费太多时间这一事实是否表明问题的根源?

最佳答案

org.hsqldb.persist.Cache.cleanUp 中花费的时间表明它的内存缓存设置较小,导致频繁清除和读取缓存。

您可以关闭应用程序并手动编辑具有较大缓存设置的数据库的.script 文件。

详细信息请参阅 HSQLDB 指南:

http://hsqldb.org/doc/2.0/guide/deployment-chapt.html

您可以在 .properties 文件中找到数据库的确切版本,并从 SourceForge 下载该版本的 zip 包,并参阅其指南以了解最大允许值。

关于java - 基于 HSQLDB 的库非常慢 : trying to narrow down search for bug,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35586999/

相关文章:

Spring jdbc :embedded-database not able to access jdbc driver on JBoss AS 7

oracle - HSQLDB ROWNUM与Oracle的兼容性

java - Android 中的 AsyncTask、线程

java - 在java中连续写入一行文本

java - 使用 Scala 的集合类型从 Java 调用 Scala 的方法

python - list.index() 是否实现缓存

sqlite - 嵌入式(进程内)数据库 H2、Hsqldb、Apache Derby、SQLite (JDBC) 中的并发

java - 将组合框超出的内容包裹在可用空间中?

c# - 如何在 Fluent NHibernate 上设置 SysCache?

hibernate - 为什么 EhCacheProvider 被弃用?