Java嵌入式数据库的速度对比
Yan的APIKEY一直是用嵌入式的数据库存储的,最初使用的是hsqldb,最近又添加了H2和Derby的支持,基本上囊括了所有开源的Java嵌入式数据库。实现多了自然需要挑选、比较一下。
数据库特性的比较,H2的网站上有很好的Matrix,一目了然
http://www.h2database.com/html/features.html#comparison
关于速度的比较,今天做了一个简单的测试。
分别从derby / H2 / hsqldb中取出10 、100、1000条数据,循环100000次,比较耗时,如下:

三者的速度差距非常明显,hsqldb远快于其他两个。
而在10、100、1000条记录的索引上查询,并取出指定记录呢,同样是100000次,如下:

再索引上查询,速度受记录数量的影响非常微弱了。但是hsqldb还是远快于其他二者,有趣的是derby的速度要略微快于H2.
根据这样的结果,在Yan的应用中,hsqldb还是最理想的实现。
性能测试的图表有什么工具可以生成?
@alex, 这个,我都不好意思说,是OpenOffice的chart。牛逼一点的可以用gnuplot,我之前写过
哇,我还一直盲目的以为H2会比Hsql快……
@Jetty, 话说,你一般在什么场合用embedded db
@Sunng,
这还是比较有用的,比如要跑个东西,得连好几个数据库,在一开始把所有要用的数据集中在embedded db上会简化程序的设计,而且还在很大程度上提高了性能,也能避免在程序运行过程中长时间的占用那些个数据库。
我主要是喜欢它的灵活性,db自己建,想怎么搞就怎么搞,而且维护起来也不麻烦,其实很多情况下,根本不需要用到db2这类的大数据库。。。不过用embeded db,一般数据是不安全的就是了
还有就是写test case的时候用,蛮方便的,当然不一定都能测到所需的功能
@Jetty, 看来也都是开发和测试的时候用啊,我就是问问有没有在生产环境里用的
或者有没有不把它当数据库用的。。。
maven有个hsqldb的插件,可以在build的时候自己建立数据库,导入sql文件,非常方便
我说的第一个就是在生产环境里运行的:-)
我明白了,你把embedded db当cache用是吧
也不完全是cache,算是临时存储吧