2010-10-10 46 views
1

我剛剛測試了H2數據存儲(Datanucleus 2.x)H2 datastore EXTREMELY慢? (不是真的!參見編輯)

性能非常低。 Postgres的1/3和MySQL的1/10(aprox。)

我對「specs」非常滿意,但是我無法在「實際用法」中看到它們。 http://www.h2database.com/html/performance.html

是否有任何性能調整,我可能會失蹤?

編輯:

H2是不慢。是迄今爲止我測試過的最快的RDBMS之一!

我需要幫助解釋爲什麼需要使用Web管理器(H2控制檯)得到這個數據庫引擎的驚人的速度...連接到數據庫通過H2 WEB控制檯進行連接時,我不小心測試我的應用程序「等voilá」,問題解決了。

爲什麼?

+0

你使用什麼版本的H2?什麼是您的數據庫URL?你的測試用例是什麼? – 2010-10-10 15:44:05

+0

我使用H2版本1.2.143(2010-09-18)的最新版本,以及h2-1.2.143.jar JDBC連接器。我的測試用例是一個完整的功能(涵蓋幾乎所有的Java類型和關係)數據存儲(當然,依賴於Datanucleus持久性引擎) – marcolopes 2010-10-10 18:24:56

+0

您是否對您的測試進行了配置文件以查明哪些特性很慢?通常這只是一個對90%的問題負責的人。一個簡單的配置文件的方式是使用java -Xrunhprof:cpu = samples – 2010-10-11 06:46:32

回答

5

默認情況下,H2在最後一次連接關閉時關閉數據庫。如果您的應用程序在每次操作後關閉了唯一連接,則數據庫會打開並關閉很多,這非常緩慢。

有多種方式來解決這個問題:

  • 使用連接池,或
  • 保持「哨兵」連接打開,只要在應用程序運行,或
  • 使用延遲數據庫通過追加結束; DB_CLOSE_DELAY = 10到數據庫URL
+0

感謝您的回覆。我也在H2 Google論壇上看到類似的文章。這正是問題所在! – marcolopes 2010-11-23 21:34:39

3

聽起來像你有主機查找問題; 5秒是典型的DNS超時。