关于hibernate 批量数据插入 mysql批量插入数据优化-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

2016-03-04 11:50:05 4075 1

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

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

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

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

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

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

取消 提交回答
全部回答(1)
  • 爵霸
    2019-07-17 18:52:04

    尝试用下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>
    0 0
相关问答

1

回答

【RDS】RDS MySQL如何终止会话?

2022-01-12 16:17:02 468浏览量 回答数 1

1

回答

RDS MySQL如何终止会话?

2022-01-07 14:15:23 886浏览量 回答数 1

1

回答

RDS MySQL迁移至PolarDB-X 2.0的前提条件是什么?

2021-12-14 16:00:48 118浏览量 回答数 1

1

回答

RDS MySQL迁移至PolarDB-X 2.0支持的源数据库是什么?

2021-12-14 16:00:21 319浏览量 回答数 1

1

回答

RDS MySQL迁移至PolarDB MySQL中信息配置的说明是什么?

2021-12-14 15:59:51 145浏览量 回答数 1

1

回答

RDS MySQL迁移至PolarDB MySQL中源、目标库无法连接重试时间的说明是什么?

2021-12-14 15:59:29 189浏览量 回答数 1

1

回答

RDS MySQL迁移至PolarDB MySQL中源表DMS_ONLINE_DDL的说明是什么?

2021-12-14 15:59:07 154浏览量 回答数 1

1

回答

RDS MySQL迁移至PolarDB MySQL中目标库对象名称大小写策略的说明是什么?

2021-12-14 15:58:39 143浏览量 回答数 1

1

回答

RDS MySQL迁移至PolarDB MySQL中设置告警的说明是什么?

2021-12-14 15:58:02 93浏览量 回答数 1

1

回答

RDS MySQL迁移至PolarDB MySQL中增量迁移的SQL操作的说明是什么?

2021-12-14 15:57:40 132浏览量 回答数 1
+关注
2
文章
9426
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载