测试一下H2数据库的性能

简介:

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


相关文章
|
11月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
642 158
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
11月前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(中)
使用MYSQL Report分析数据库性能
756 156
|
11月前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(上)
最终建议:当前系统是完美的读密集型负载模型,优化重点应放在减少行读取量和提高数据定位效率。通过索引优化、分区策略和内存缓存,预期可降低30%的CPU负载,同时保持100%的缓冲池命中率。建议每百万次查询后刷新统计信息以持续优化
821 161
|
Java 测试技术 数据库
使用benchmarksql测试数据库处理能力
传统的OLTP业务,应用系统使用 java 开发,并且不建议使用存储过程,使用 benchmarksql 压测数据库最公平,既可以测试数据库性能,也可以测试JDBC驱动
1133 88
|
11月前
|
测试技术 UED 开发者
性能测试报告-用于项目的性能验证、性能调优、发现性能缺陷等应用场景
性能测试报告用于评估系统性能、稳定性和安全性,涵盖测试环境、方法、指标分析及缺陷优化建议,是保障软件质量与用户体验的关键文档。
|
缓存 关系型数据库 MySQL
MySQL数据库性能调优:实用技术与策略
通过秉持以上的策略实施具体的优化措施,可以确保MySQL数据库的高效稳定运行。务必结合具体情况,动态调整优化策略,才能充分发挥数据库的性能潜力。
825 0
|
SQL 关系型数据库 MySQL
如何优化SQL查询以提高数据库性能?
这篇文章以生动的比喻介绍了优化SQL查询的重要性及方法。它首先将未优化的SQL查询比作在自助餐厅贪多嚼不烂的行为,强调了只获取必要数据的必要性。接着,文章详细讲解了四种优化策略:**精简选择**(避免使用`SELECT *`)、**专业筛选**(利用`WHERE`缩小范围)、**高效联接**(索引和限制数据量)以及**使用索引**(加速搜索)。此外,还探讨了如何避免N+1查询问题、使用分页限制结果、理解执行计划以及定期维护数据库健康。通过这些技巧,可以显著提升数据库性能,让查询更高效流畅。
|
物联网 测试技术 API
时序数据库 InfluxDB 3.0 版本性能实测报告:写入吞吐量提升效果验证
TSBS 测试表明,对于少于 100 万台设备的数据集,InfluxDB OSS 3.0 的数据写入速度实际上比 InfluxDB OSS 1.8 更慢。 对于 100 万台及以上设备的数据集,InfluxDB OSS 3.0 的数据写入性能才开始超过 InfluxDB OSS 1.8。 InfluxDB OSS 3.0 的数据写入接口与 InfluxDB 1.8 并不兼容,用户无法顺利迁移。
1404 7