批量保存部分:保存使用的是原生态sql类似如下
for(int k : 200){
String hql = "insert into xx values(xx,xx,xx,xx,'"+k+"');"
SQLQuery sqlQuery = session.createSQLQuery(hql);
sqlQuery.executeUpdate();
}
for(int k : 200){
String hql = "insert into xx values(xx,xx,xx,xx,'"+k+"');"
SQLQuery sqlQuery = session.createSQLQuery(hql);
sqlQuery.executeUpdate();
}
解决方案 »
- struts2+JSON插件时启支出错
- java实现网站视频的上传与播放求解!!
- struts2.1.8 整合dwr时候出现的问题
- 【关于JAVAEE 6中slf4j冲突,绑定Log4j失败,求解决方案】
- Spring的配置事务问题,请大家帮忙!!!!!!!!!!!!!!!!
- 想找一个FTP服务器端的源码,给点意见
- Web Services 教程 推荐
- 最近思维混乱.请教一下HttpServletRequest与HttpServletResponse的问 题
- WebLogic Portal
- J2EE下SessionBean直接访问ORACLE数据库的问题
- 北京中信网络科技有限公司JAVA程序员有谁了解的?
- java,修改从缓存获取的集合,结果缓存的内容也修改了,求大侠指导
优化方案,
第一必然要优化sql语句
1,可以考虑2种方式:将所有sql语句,整合成一条!拼成一条插入sql语句...insert into table....(第一条数据,第二跳数据,第三条数据)
2,使用executebath 批量插入 自己百度,开启事务,循环插入,事务提交第二,干掉spring,这种性能优先的,必然JDBC,简单,粗暴,有效!spring映射浪费太多时间第三,并发情况下,可以加入多线程,预先预留几个线程进行等待,根据并发数来设置
线程要做的就是,当用户进行批量操作的时候,交出操作数据库的dao!可以考虑单例工厂模式
例如:String connectionUrl="jdbc:mysql://192.168.1.100:3306/test?rewriteBatchedStatements=true";
还要保证mysql JDBC驱的版本。MySql的JDBC驱动的批量插入操作性能是很优秀的。
MySql JDBC 驱动版本号 插入10万条数据用时
5.0.8 加了rewriteBatchedStatements参数,没有提高 17.4秒
5.1.7 加了rewriteBatchedStatements参数,没有提高 17.4秒
5.1.13 加了rewriteBatchedStatements参数,速度提高到1.6秒参考
http://www.iteye.com/topic/770032
这文章确实受益匪浅、使用mysql jdbc 5.1.17 jar
rewriteBatchedStatements=true 和 insert into table values (xx,xx),(yy,yy),(zz,zz)的语句 这提升不是几倍就够的、都可以几十倍了、
200多条数据单机就 30 ms了、再次感谢阿甘和iteye的srdrm作者探索精神、
例如:String connectionUrl="jdbc:mysql://192.168.1.100:3306/test?rewriteBatchedStatements=true";
还要保证mysql JDBC驱的版本。MySql的……