我有一個包含五個屬性的域類,它們都是字符串,整數或雙精度。我使用H2內存數據庫作爲此域類的數據源。這是存儲在此數據庫中的唯一對象;其餘的都存儲在一個完全獨立的MySQL數據庫中。使用內存中的H2數據庫緩存批量導入
H2數據庫是臨時的。數據每小時從遠程下載的CSV文件中加載並替換數據庫中的舊數據。因爲所有其他進程都必須等待它完成,所以重要的是儘可能快。
現在我的代碼生成一個約6000個這樣的域對象的數組,然後每個save
它。這全部在withTransaction
之內。
這需要大約10秒鐘來保存。 HSQLDB內存數據源中的數字稍差一些。我已經嘗試了關於刷新會話等的指示,但這些只會增加所需的時間。
加快這6000個物體的批量插入的最佳解決方案是什麼?會放棄GORM並直接編寫SQL插入語句顯着更快?
// data is an array of about 6,000 domain objects
data.each { item ->
item.save()
}