博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
测试一下H2数据库的性能
阅读量:6004 次
发布时间:2019-06-20

本文共 1150 字,大约阅读时间需要 3 分钟。

最近有个项目要用到高性能数据库,数据量不大但读写统计非常频繁,所以优先考虑内存数据库。找了找发现一个叫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,如需转载请自行联系原作者

你可能感兴趣的文章
【YUM】第三方yum源rpmforge
查看>>
IOS(CGGeometry)几何类方法总结
查看>>
一个通用并发对象池的实现
查看>>
才知道系列之GroupOn
查看>>
⑲云上场景:超级减肥王,基于OSS的高效存储实践
查看>>
linux kswapd浅析
查看>>
变更 Linux、Ubuntu 时区、时间
查看>>
高仿QQ空间 侧滑Menu效果且换肤功能《IT蓝豹》
查看>>
mac的git的21个客户端
查看>>
Django之form表单实例
查看>>
Spring Cloud自定义引导属性源
查看>>
OSChina 周日乱弹 ——程序员怎么攒钱买房子!(励志、温情)
查看>>
mysql树状数据的数据库设计
查看>>
JavaScript快速入门
查看>>
Intger 自动装拆箱
查看>>
html中a连接触发表单提交
查看>>
Linux网卡名改eth0方法
查看>>
SQL or NoSQL——云计算环境中该选择谁
查看>>
托盘气泡很长时间才能消失,uTimeout没起到作用的解决办法
查看>>
利用webshell搭建socks代理
查看>>