今天上午写个程序要将几张表内的数据读出写入一张表(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();
}
}
标签:em,批量,批处理,数据库,写入,自动,commit
From: https://blog.51cto.com/u_6978506/7469999