H2 数据存储非常慢? (不是真的!见编辑)

Posted

技术标签:

【中文标题】H2 数据存储非常慢? (不是真的!见编辑)【英文标题】:H2 datastore EXTREMELY slow? (NOT Really! See EDIT) 【发布时间】:2010-10-10 11:17:48 【问题描述】:

我刚刚测试了 H2 数据存储(使用 Datanucleus 2.x)

性能很慢。 Postgres 的 1/3 和 mysql 的 1/10(大约)

我对“规格”非常满意,但在“实际使用”中看不到它们。 http://www.h2database.com/html/performance.html

是否有任何我可能遗漏的性能调整?

编辑:

H2 不慢。是我迄今为止测试过的最快的 RDBMS 之一!

我需要帮助解释为什么我需要使用 WEB MANAGER(H2 控制台)连接到数据库以获得这个数据库引擎的惊人速度...我在连接时不小心测试了我的应用程序H2 WEB 控制台“等一下”,问题解决了。

为什么?

【问题讨论】:

你用的是什么版本的H2?您的数据库 URL 是什么?你是什​​么测试用例? 我正在使用最新版本的 H2 版本 1.2.143 (2010-09-18),带有 h2-1.2.143.jar JDBC 连接器。我的测试用例是一个功能齐全(几乎涵盖所有 java 类型和关系)的数据存储(当然,依赖于 Datanucleus 持久化引擎) 您是否分析了您的测试以找出哪些特定功能较慢?通常它只是造成 90% 问题的原因。一个简单的分析方法是使用 java -Xrunhprof:cpu=samples 如下所示,由于您甚至无法可靠地连接到 Web 界面,因此我看不到 DataNucleus 或您的应用程序或任何东西的相关性。可以尝试一个简单的 JDBC 程序,使用 JDBC URL。即基本调试 请看我的编辑。 【参考方案1】:

默认情况下,H2 会在最后一个连接关闭时关闭数据库。如果你的应用程序在每次操作后关闭唯一的连接,那么数据库打开和关闭的次数很多,这很慢。

有多种方法可以解决这个问题:

使用连接池,或者 在应用程序运行期间保持“哨兵”连接打开,或者 通过将 ;DB_CLOSE_DELAY=10 附加到数据库 URL 来使用延迟数据库关闭

【讨论】:

感谢您的回复。我在 H2 Google 论坛上也有类似的。这正是问题所在!【参考方案2】:

听起来您遇到了主机查找问题; 5 秒是典型的 DNS 超时。

【讨论】:

以上是关于H2 数据存储非常慢? (不是真的!见编辑)的主要内容,如果未能解决你的问题,请参考以下文章

mongodb单集合可以存多少数据

python-redis

我用的是excel2013,别人给我发了一个excel文件,后缀为.xlsm;每次打开都非常慢,显示如下图。

非常慢的存储过程

将数据存储到 PySpark (Azure - DataBricks) 中的数据库非常慢

存储过程非常慢,与具有相同结构的快速视图相比