首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

MySQL 批量插入 10 萬筆測試:JDBC 版本差異與效能調優

     編輯:Java 程式設計入門

測試環境

  • 資料表:test(id int PK, txt varchar(70)),id 建立索引
  • 插入 10 萬筆,內容為「這條記錄是第=序號」
  • 關閉自動提交(con.setAutoCommit(false)),最後統一 commit()
  • 使用 PreparedStatement 參數化插入

關鍵程式碼片段

con.setAutoCommit(false);
for (int i = 1; i <= 100000; i++) {
    String info = "這條記錄是第=" + i;
    PreparedStatement pstmt = con.prepareStatement(
        "insert into test (id,txt) values(?,?)");
    pstmt.setInt(1, i);
    pstmt.setString(2, info);
    pstmt.executeUpdate();
}
con.commit();

不同 JDBC 驅動版本測試結果

驅動版本最大成功筆數耗時中文支援備註
3.1.7 / 3.1.12~1.2 萬-正常OOM:Java heap space
3.0.16-ga10 萬98.6 秒正常唯一完整通過
3.0.1010 萬-亂碼中文編碼問題
jTDS (SQL Server)10 萬1746 秒-效能極差

結論與建議

  • MySQL 官方 3.0.16-ga 版本最穩定,記憶體佔用低
  • 3.1.x 系列需較大 Heap(-Xmx512m 以上)
  • 批量插入務必:關閉自動提交 + PreparedStatement 重用 + 批次執行(addBatch/executeBatch),可再提升 10 倍以上效能
  • 測試機記憶體不足時易觸發 OOM,建議調大 JVM 堆或分批提交
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved