测试一下H2数据库的性能

本文介绍了在测试环境下,使用H2数据库进行性能测试的结果。在单线程情况下,插入10万条数据仅用1827ms,相比MySQL的Memory引擎展现出显著的性能优势。即使在5线程并发情况下,性能也只轻微下降至2050ms。当切换到TCP模式,性能虽有所降低,但仍优于MySQL。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近有个项目要用到高性能数据库,数据量不大但读写统计非常频繁,所以优先考虑内存数据库。找了找发现一个叫H2的数据库,据说性能不错,拿来试验一下。

硬件环境:Inter E8400 @ 3.0G,4G内存
软件环境:Windows 7 32bit,H2 1.3.167,JDK 1.6

开发时非常简单,只有一个1.2M的jar文件,引入项目就可以了。

测试代码:


  1. import java.sql.*; 
  2. import java.util.*; 
  3.  
  4. public class H2Test { 
  5.  
  6.     public static void main(String[] args) throws Exception { 
  7.         //以嵌入式内存模式工作,建个简单的表 
  8.         Connection conn = DriverManager.getConnection("jdbc:h2:mem:test"); 
  9.         PreparedStatement stmt = conn.prepareStatement("CREATE TABLE cc (GUID varchar(40) PRIMARY KEY,Data int,AddTime datetime)"); 
  10.         stmt.execute(); 
  11.         Random rand = new Random(); 
  12.          
  13.         //精度要求不高,就用这个计时吧 
  14.         long start = System.currentTimeMillis(); 
  15.         stmt = conn.prepareStatement("INSERT INTO cc VALUES (RANDOM_UUID(), ?, NOW())"); 
  16.         for(int i = 0;i < 100000;++i){ 
  17.             stmt.setInt(1, rand.nextInt()); 
  18.             stmt.execute(); 
  19.         } 
  20.         long duration = System.currentTimeMillis() - start; 
  21.         conn.close(); 
  22.          
  23.         System.out.println("Finished in " + duration + " ms"); 
  24.     } 

运行一下,单线程插入10万条数据,只用时1827ms,性能确实惊人,之前对比过MySQL的Memory引擎,同样的表结构,记得插入10万条记录大约要8秒。

PS:另外测试了一下5个线程并发总共插入10万条记录,性能略有下降,2050ms。

PPS:如果不用内存模式,改用tcp模式,性能下降严重,10万次插入要将近7秒,不过和MySQL比仍有一点优势。

 




     本文转自 BoyTNT 51CTO博客,原文链接:http://blog.51cto.com/boytnt/932237,如需转载请自行联系原作者


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值