hibernate+MySQL性能测试

时间:2022-09-19 23:45:01

一、简介

测试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万数据花费的时间。

hibernate+MySQL性能测试

hibernate+MySQL性能测试

结论:

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

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

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

hibernate+MySQL性能测试

hibernate+MySQL性能测试

hibernate+MySQL性能测试

结论:

1 单线程效率最低
2 8核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+缓存肯定更快的。