哪个更好H2或HSQLDB?

dex*_*ter 83 java database comparison h2 hsqldb

HSQLDB 2.0即将发布.我想知道它是否会胜过H2,因为据我所知,大多数用户更喜欢H2而不是HSQLDB.我对HSQLDB 2.0的MVCC支持感兴趣.我了解到H2的MVCC仍然是实验性的.关于支持/文档​​,并发性,性能,两者之间哪个更好?

Luk*_*der 61

我是数据库抽象库(jOOQ)的开发人员,它支持两个数据库.我的130多个集成测试涵盖了许多功能,包括调用存储过程和函数,数组,嵌套选择等.就DML而言,我的体验HSQLDB 2.1要比H2 1.3小型数据库快一些.

但是,HSQLDB在DDL操作以及启动/关闭实例时的性能都高于H2,即使对于小型数据库也是如此(由于H2在每次数据库启动时都使用javac重新编译存储的函数!).这取决于存储存储函数的方式.显然,这是一个特定于jOOQ的"问题",另见Thomas Mueller的评论.

另一方面,我同意用户trashgod,您应该针对合理的架构和用例自行测试性能.

  • 存储函数只有在"作为源代码"存储时才会被重新编译,这是HSQLDB中没有的功能(据我所知).如果使用预编译的存储函数,则没有这样的开销. (7认同)
  • @ThomasMueller:谢谢,我不知道.这将大大加快我的集成测试速度.我会相应地调整我的答案.HSQLDB具有类似PL/SQL的过程语言,它是更强大的IMO.我不确定,如果该语言是预先编译或解释的...... (2认同)

tra*_*god 45

两个HyperSQLH2 Database相当透明的,所以测试可以是确定哪个更适于特定用途的最佳方法.比较涉及一个其他可用.他们都有一个共同的遗产,又都是开放 源码.

  • "垃圾桶是一个重要的设计工具" - [_ loc.cit._](http://stackoverflow.com/a/22259102/230513) (9认同)
  • 感谢您的"遗产"链接.他们非常精彩地总结了这段历史.首先是HSQLDB(Hypersonic SQL)然后是H2,但HSQLDB和H2不共享任何相同的代码,并且是截至今天的单独项目. (3认同)