开发者社区> 问答> 正文

关于hibernate 批量数据插入 mysql批量插入数据优化

好吧,今天问一个Hibernate大批量数据插入的问题。

前些日子又遇到一个问题。

解析csv文件,
插入数据库,
直接使用session.createSQLQuery()的原生sql插入:insert into
大致6W条数据,用了2min。表没有外键关联。

然后问了下,被告知,速度还是很慢,要求去网上找些sql数据库批量插入数据优化的方法。

于是度娘之,测试之,可惜都没有有效的方法。

所以我又来求助了,请问有啥优化的方法嘛?

展开
收起
爵霸 2016-03-04 11:50:05 4562 0
1 条回答
写回答
取消 提交回答
  • 尝试用下Hibernate的Batch Insert(参考http://www.tutorialspoint.com/hibernate/hibernate_batch_processing.htm):

    Session session = SessionFactory.openSession();
    Transaction tx = session.beginTransaction();
    for ( int i=0; i<100000; i++ ) {
        Employee employee = new Employee(.....);
        session.save(employee);
        if( i % 50 == 0 ) { // Same as the JDBC batch size
            //flush a batch of inserts and release memory:
            session.flush();
            session.clear();
        }
    }
    tx.commit();
    session.close();

    然后还需要在配置文件中配置下hibernate.jdbc.batch_size,它的值与上面的值相等:

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-configuration SYSTEM 
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
     
    <hibernate-configuration>
       <session-factory>
       <property name="hibernate.dialect">
          org.hibernate.dialect.MySQLDialect
       </property>
       <property name="hibernate.connection.driver_class">
          com.mysql.jdbc.Driver
       </property>
     
       <!-- Assume students is the database name -->
       <property name="hibernate.connection.url">
          jdbc:mysql://localhost/test
       </property>
       <property name="hibernate.connection.username">
          root
       </property>
       <property name="hibernate.connection.password">
          root123
       </property>
       <property name="hibernate.jdbc.batch_size">
          50
       </property>
     
       <!-- List of XML mapping files -->
       <mapping resource="Employee.hbm.xml"/>
     
    </session-factory>
    </hibernate-configuration>
    2019-07-17 18:52:04
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像