批量保存部分:保存使用的是原生态sql类似如下
for(int k : 200){
   String hql = "insert into xx values(xx,xx,xx,xx,'"+k+"');"
   SQLQuery sqlQuery = session.createSQLQuery(hql);
   sqlQuery.executeUpdate();
}

解决方案 »

  1.   

    外包公司,都出你这种人才?笑了!insert就这样,如果是批量Update操作,你岂不是要去死?
    优化方案,
    第一必然要优化sql语句
    1,可以考虑2种方式:将所有sql语句,整合成一条!拼成一条插入sql语句...insert into table....(第一条数据,第二跳数据,第三条数据) 
    2,使用executebath 批量插入 自己百度,开启事务,循环插入,事务提交第二,干掉spring,这种性能优先的,必然JDBC,简单,粗暴,有效!spring映射浪费太多时间第三,并发情况下,可以加入多线程,预先预留几个线程进行等待,根据并发数来设置
    线程要做的就是,当用户进行批量操作的时候,交出操作数据库的dao!可以考虑单例工厂模式
      

  2.   

    MySql的JDBC连接的url中要加rewriteBatchedStatements参数,并保证5.1.13以上版本的驱动,才能实现高性能的批量插入。
    例如: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
      

  3.   


    这文章确实受益匪浅、使用mysql jdbc 5.1.17 jar
    rewriteBatchedStatements=true  和 insert into table values (xx,xx),(yy,yy),(zz,zz)的语句 这提升不是几倍就够的、都可以几十倍了、
    200多条数据单机就 30 ms了、再次感谢阿甘和iteye的srdrm作者探索精神、
      

  4.   

    MySql的JDBC连接的url中要加rewriteBatchedStatements参数,并保证5.1.13以上版本的驱动,才能实现高性能的批量插入。
    例如:String connectionUrl="jdbc:mysql://192.168.1.100:3306/test?rewriteBatchedStatements=true"; 
    还要保证mysql JDBC驱的版本。MySql的……
      

  5.   

    还得是jdbc,简单高效才是硬道理