hibernate+MySQL性能测试

本文测试了在不同环境下,使用Hibernate HQL、Java调用MySQL存储过程以及Hibernate SQL进行大量数据插入的性能。测试环境为Windows7,软件环境包括Eclipse、Tomcat7、JDK1.7和Hibernate4.3.6。结果表明,对于大量数据插入,SQL方式通常比HQL更快。

一、简介

测试hibernate+MySQL在不同情况下,分别插入1万、5万、10万、30万条数据花费的时间。


运行环境:Windows7(8核,4G)

软件环境:Eclipse(Tomcat7,Debug模式)、JDK1.7、hibernate4.3.6

数据库:Mysql5.5.28


* 存储过程(java调用)的作用:插入单条数据,由java循环调用

* 所有操作都伴随着事务,否则很慢很慢

二、 应用服务器和数据库服务器部署在不同的机器上,比较‘hibernate hql’和‘java调用Mysql存储过程’分别插入1万、5万、10万、30万数据花费的时间。



结论:

1单线程效率最低
28核CPU,3线程最优,多开线程并没有提升(反而是变差了)
3hibernate hql效率优于存储过程
4第一次执行速度比之后的慢,可能与预编译sql有关       sql预编译
  
  
  

* 大量插入数据太费时,所以有些数据是空的。根据其他数据的运行结果,应该可以估算出来。

三、应用服务器和数据库服务器部署在相同的机器上,比较‘hibernate hql’、‘java调用Mysql存储过程’和‘hibernate sql’分别插入1万、5万、10万、30万数据花费的时间。




结论:

1单线程效率最低
28核CPU,3线程最优(某些情况下5线程更优)
3运行效率:hibernate sql > procedure > hibernate hql
4第一次执行速度比之后的慢,可能与预编译sql有关
5另外测试了存储过程(非java调用),速度非常快。见最右下角
6部署在不同机器上的操作比部署在相同机器上的操作慢2-6倍(随着数量增加倍数增加),说明网络IO远比执行sql本身要慢得多

 

HQL与SQL:当然是SQL快啦,hql最终也是要转为SQL的,我个人认为他的价值只在跨数据库,hql转换成SQL是一个复杂的过程,也算hibernate的核心部分了,所以还是SQL来的直接,不用转换直接查,缓存方面也可用其他方案,设想一下如果你用SQL+缓存肯定更快的。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值