为什么H2 1.1.117在Mac OS X上性能较差?

时间:2011-03-25 09:57:25

标签: macos h2

在具有400k行的表上运行相同的查询(带有几个INNER JOIN的SELECT)时,在Mac OS X上比在Linux或Windows 7上花费的时间要长近30倍。但是,硬件配置不同,但不足以保证这么大的差异。我能够在运行Mac OS X 10.6的几台计算机上重现性能问题。奇怪的是,在长查询执行过程中杀死H2后,我获得了预期的性能,并让H2在下次启动时修复数据库。但是,我无法一贯地重现这一点。

我在Mac OS X上注意到,在提交查询后几秒钟,CPU和磁盘使用率几乎都降至零,并且只在返回查询结果之前才恢复正常。
测试计算机安装了以下Java版本:

  • Mac OS X:Java(TM)SE运行时环境(版本1.6.0_24-b07-334-10M3326) Java HotSpot(TM)64位服务器VM(版本19.1-b02-334,混合模式)
  • Linux:Java(TM)SE运行时环境(版本1.6.0_20-b02),Java HotSpot(TM)64位服务器VM(版本16.3-b01,混合模式))
  • Windows:Java(TM)SE运行时环境(版本1.6.0_24-b07) Java HotSpot(TM)64位服务器VM(版本19.1-b02,混合模式)

所有计算机都运行H2 1.1.117。虽然我知道这个版本已经很老了,但我现在更愿意坚持使用它,但我需要理清这个明显特定于平台的性能问题。我已经搜索了错误报告,但没有发现任何相关内容。

1 个答案:

答案 0 :(得分:1)

这不太可能与操作系统有关。

如果CPU和磁盘使用率均为零,我建议获得完整的线程转储(jps -l,然后jstack -l <pid>)以找出进程正在执行的操作。

你运行ANALYZE了吗?在较新版本的H2(1.3.x)上,不再需要这样做。

如果这不是问题,我建议您查看Database Performance Tuning文档。我知道,很多都是通用的,但它可能仍然有用。如果仍然无法解决问题,请参阅Application Profiling并使用您找到的结果更新问题。