锁定老帖子 主题:mybatis性能比ibatis慢一倍
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2012-04-17
最后修改:2012-04-17
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
|
返回顶楼 | |
发表时间:2012-04-17
杨姐出现了...
|
|
返回顶楼 | |
发表时间:2012-04-17
dengmingfeng 写道 在我看来ibatis本来就是一个失败的架构。开发效力不及hibernate,
要写一大堆的代码,在我看了它一看的时候就果断放弃了。 过了这么多年,还没有流行起来。 开发效率如何衡量的呢 |
|
返回顶楼 | |
发表时间:2012-04-17
Issue 580 Status: Accepted
值得庆祝下,现期待下一个release吧。 |
|
返回顶楼 | |
发表时间:2012-04-18
说的Mybatis的速度又让我想起了两年前我发的一个贴
http://www.iteye.com/problems/52051 |
|
返回顶楼 | |
发表时间:2012-04-18
直接加硬件成本。。IBM的策略,哈哈哈
|
|
返回顶楼 | |
发表时间:2012-04-18
值得关注的问题
|
|
返回顶楼 | |
发表时间:2012-04-18
hibernate从设计上讲是优越的,但条条框框也多。
ibatis的思路到是大道从简了,便于对性能优化的定制设计。 个人从业经验,在传统企业应用中使用hibernate 在互联网应用中使用ibatis/mybatis. 这个世界上很少有万精油方案啊,两者都是好东西!! 楼主的帖子还是很有价值的。 |
|
返回顶楼 | |
发表时间:2012-04-18
最后修改:2012-04-18
楼主测试环境是什么配置和数据库版本?
我用mysql5.1.57 (酷睿2 Dell台式机 500G西数硬盘 3G内存 XP) 对一个表22个字段 (ID自增长,总计23个字段,4个varchar 2个char。无text blog字段,其他都是int或tinyint) 有三个索引 email, username, userGroupId JDBC连接batch插入,跟你的一样batch size=1000, batch insert 1000次,总共100万条数据 代码大致如下 String sql = "INSERT INTO pg_user(username,email,password,regIp,regDate,salt,emailCheck,avatarStatus,adminGroupId," + "userGroupId,teacherLevel,sourceType,activeTime,canAdmin,credits,delFlag,essayCount," + "oralCount,psCount,lastLoginIp,lastLoginTime,loginTimes) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; long ttt = 0; long t1 = System.currentTimeMillis(); for(int j=0; j<n; ++j) { stmt = conn.prepareStatement(conn, sql); conn.setAutoCommit(false); for(i = 0; i < paramss.length; i++) { long t11 = System.currentTimeMillis(); fillStatement(stmt, paramss[i]); ttt += (System.currentTimeMillis()-t11); stmt.addBatch(); } stmt.executeBatch(); conn.commit(); } long t2 = System.currentTimeMillis(); System.out.println("插入" + (beanList.size() * n) + "条记录用时" + (t2-t1) + "ms, fillStatement用时" + ttt + "ms"); paramss是一个object[][] 都是准备好的测试数据 fillStatement 是用反射设置PrepareStatement参数的方法(因为担心这个方法会用时过多,进行了统计,但实际占用时间并不多) 结果 myisam表类型: 插入1000000条记录用时258482ms, fillStatement用时20817ms innodb表类型: 插入1000000条记录用时324539ms, fillStatement用时20928ms 测了几次都差不多。100万条在myisam需要260秒左右 innodb需要320秒左右 感觉我直接用jdbc插入的性能都比楼主的数据低这么多,是代码还是数据库或机器配置问题? |
|
返回顶楼 | |
发表时间:2012-04-18
请楼主能够提供测试代码。
|
|
返回顶楼 | |