1. 程式人生 > >[置頂] 大資料的驗證和插入資料庫

[置頂] 大資料的驗證和插入資料庫

最近在做專案的時候涉及到大資料的校驗和插入。問題描述:通過Excel匯入客戶資訊表至資料庫中指定表。

剛看到該問題,自然而然就是想直接將Excel解析至記憶體。在記憶體中遍歷對應的客戶List集合,取出每一個Customer和資料庫中的資料進行比對判斷該使用者是否存在,存在的話在重複值上計數,不存在的話插入資料庫。但是當資料達到10w+的時候,那個速度都不能直視了。思考解決方案,首先採用的解決方案:校驗放在外層,裡層進行判斷分多執行緒執行。每個執行緒5k資料。只有5-6 k資料時,還可以。但是當資料量達到10w+時,速度還是很慢。後來測試發現,單單只是用插入其實速度還是可以的,但前面加上驗證之後,就嚴重拖垮了插入速度。但驗證還必須使用,苦惱了好一陣。後來通過在網上查詢相關資料發現,有一個比較好的解決方案:在資料庫的對應校驗欄位建立唯一索引,在插入的時候讓資料庫自己進行校驗。程式碼邏輯和資料庫分攤壓力。在使用save時,由於建立了唯一索引所以插入會出問題,報DataIntegrityViolationException的異常。在Try,catch中將其捕捉,進行重複值的累計。這時,之前想要的效果已經實現。