您的位置:首页 > 数据库 > MySQL

hibernate+MySQL性能测试

2016-06-17 09:55 483 查看

一、简介

测试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+缓存肯定更快的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hibernate mysql java