0
我正在使用ibatis for my sql insert stmt。在我的代碼中,我從文件夾中逐行解析文件。每條符合條件的行都需要插入到數據庫中。 程序的一次運行中插入的總數可以是任何沿着200k的地方。ibatis:提高插入性能
SqlSession sess = null;
this.sess = sf.openSession(ExecutorType.BATCH, false);
for (each file) {
for(each line matching criteria){
this.sess.insert("com.logs.util.insertFileInfo", fileData);
insertcount++;
if(insert count == 10)
this.sess.commit();
}
}
if(insert count > 0){
this.sess.commit();
}
}
此風格緩慢佔用大量內存,並在某些時候拋出OutOfMemory異常。 如何提高性能?
剛剛更新了算法 – changed 2010-10-19 16:26:42
隨着這一改變,你會在前10行之後提交,然後在每個文件之後提交是否需要提交;它聽起來並不正確。如果一個文件包含(說)50K行,那麼這些50K項目將不得不被緩衝在某處。它們將由Ibatis,底層JDBC驅動程序或DBMS保留。如果您使用mod運算符(%),那麼您將永遠不會緩衝超過10個掛起的更改。另外,不要忘記在外部循環完成後提交會話。 – PhilDin 2010-10-19 16:43:51