先貼代碼,正常的BATCH模式入庫。
入庫資料是從hornetq訊息佇列讀取,約1000W資料量
入庫效率剛開始10000條資料,約5000ms;入庫上百萬后,入庫效率明顯變低,10000條資料,入庫需20000ms
個人猜測可能的原因:1.oracle資料庫入庫效率問題;2.hornetq佇列積壓,處理不過來,導致入庫效率慢(這個會導致入庫慢嗎?)
求助
!!!private void save(final List<DSOnlineOrder> orders) {
if (orders == null || orders.isEmpty()) {
return;
}
SqlSession sqlSession = null;
DSOnlineOrderMapper mapper;
try {
sqlSession = toFactory.openSession(ExecutorType.BATCH, false);
mapper = sqlSession.getMapper(DSOnlineOrderMapper.class);
for (DSOnlineOrder dsPayOrder : orders) {
mapper.insertSelective(dsPayOrder);
}
sqlSession.commit();
sqlSession.clearCache();
} catch (Exception e) {
if (sqlSession != null)
sqlSession.rollback();
logger.error("save dspayorder error:", e);
} finally {
if (sqlSession != null)
sqlSession.close();
}
}
uj5u.com熱心網友回復:


入庫條數和入庫時間前后對比。。。
uj5u.com熱心網友回復:
用insert all試一下,參考:<insert id ="insertBatch" parameterType="java.util.List">
INSERT ALL
<foreach collection ="itemList" item= "item">
INTO TABLEAAA (C1, C2) values (#{item.c1},#{item.c2})
</foreach >
SELECT * FROM dual
</insert >
參考
自增有:https://qiita.com/yang1005/items/951cb8bc5aff23e6355e
自增無:https://qiita.com/yang1005/items/05488893fb3d4cfc58c0
uj5u.com熱心網友回復:
我也想知道為什么,batch模式大資料量時,越往后越慢轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/284313.html
標籤:Java EE
上一篇:jvm的元空間在哪個檔案有介紹
