日期:2014-05-18  浏览次数:20928 次

【求方向】hibernate 并发、批量插入数据
   环境:
   
   数据库:本机:mysql 5.5.2   集群 cluster版本7.2.5
   链接池:c3p0
   框架:S2SH


   现有一批量保存的功能、条数在200条左右、单机测试是534ms左右
   而发布到部署的集群环境中、200多条数据竟然等了1分钟、
   
   并发人数最多50+人 (但都不是批量保存的动作、而是其他的正常动作)

   监控数据库的时候  进程在20左右

   我批量保存代码如下、

   

     SessionFactory sf = hibernateTemplate.getSessionFactory();
       //session不是从事务中获取的、自己新创个、
          Session session = sf.openSession();
          
          
          session.getTransaction().begin();
          long s = System.currentTimeMillis();
          //循环保存、累积一起提交事务 time++

          session.getTransaction().commit();
          
          long e = System.currentTimeMillis();
          System.out.println("共执行了"+time+"行数据用时:"+(e-s)+"ms");
        
          session.flush();
          session.clear();
          session.close();

   


    spring配置数据源


    


<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
        <property name="sessionFactory" ref="sessionFactory"/>
        <property name="cacheQueries" value="true"/>
        <property name="fetchSize" value="100"/>
        <property name="maxResults" value="10000"/>
    </bean>

    <bean id="dataSource"
          class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
        <property name="driverClass">