最近遇到乙個問題:我的程式需要向某張表中匯入一萬條資料,如何提高其效率?
在**層面,下面兩種方式是比較常見的:
使用statement物件執行插入的**如下:使用preparedstatement物件
public void insertbystatement(string username,string password)
} catch (sqlexception e) finally
} public void insertbypreparedstatement(string username,string password)
ps.executebatch();
} catch (sqlexception e) finally
}
下面分為單執行緒和多執行緒兩種思路來測試:
單執行緒情況:使用statement耗時218s。
try
conn.commit();
} catch (sqlexception e) catch (sqlexception e1)
}
使用preparedstatement批處理耗時8s。try catch (sqlexception e) catch (sqlexception e1)
}
多執行緒(4個執行緒,每個執行緒插入2500條)情況下:
使用statement耗時61s,本文略去**。
使用preparedstatement批處理耗時4s,**如下:
try catch (sqlexception e) catch (sqlexception e1)
}
本文僅僅在**層面做了優化,可以看出,在一次性大量地插入資料時,preparedstatement物件的executebatch()和多執行緒的效率是比較好的。
MySQL優化之海量資料批量插入
問 為何對同乙個表的插入多執行緒會比單執行緒快?同一時間對乙個表的寫操作不應該是獨佔的嗎?答 在資料裡做插入操作的時候,整體時間的分配是這樣的 鏈結耗時 30 傳送query到伺服器 20 解析query 20 插入操作 10 詞條數目 插入index 10 index的數目 關閉鏈結 10 從這裡...
jdbc 批量插入優化
專案中有乙個大資料插入的功能是通過jdbc的批處理實現的,但效率一直不理想。最近研究了一下,做如下總結 1 如果id使用的是uuid,一定要保證有序。因為通常資料庫會為主鍵建立聚集索引。而聚集索引是用來指明資料排序規則的。所以,對於非有序的id,插入的同時會做大量的排序操作,很影響效率。另外,我們在...
PHP MySQL批量插入資料的優化方法
mysql批量插入資料的優化方法,廢話少說直接貼 link mysql connect localhost root or die mysql error mysql select db phone link or die mysql error mysql query set names gbk ...