关于批量写入数据库

今天上午写个程序要将几张表内的数据读出写入一张表(2w多数据),开始没有使用批处理(每条写入都自动commit),写入速度在分钟级(太慢了后来就没计时),后来添加了批处理(不自动commit),全部用时20多秒。可见批处理写入数据库要快很多。程序大致结构如下:

EntityManager em = JPA.em();
em.setFlushMode(FlushModeType.COMMIT);
for(int i=0;i<20000;i++){
	MaterialInfo mi = new MaterialInfo();
	//set...
	em.persist(mi);
	if(i%BATCH_SIZE==0){
		em.flush();
	}
}
 上面的BATCH_SIZE我设置的是100,即每100条数据提交一次。

你可能感兴趣的:(数据库)