2011-09-01 112 views
8

這裏的交易:JDBC批量插入緩慢!我的意思是,真的很慢?

  1. 我創建一個使用DriverManager
  2. 我設置conn.autoCommit(false);
  3. 然後,我有PreparedStatement pStat = conn.prepareStatement(insert_string_with_parameter);
  4. 我設置幾個參數與pStat.set連接conn ...然後我添加批號pStat.addBatch();
  5. 每10000行(我撥打addBatch() 10000次),我打電話pStat.executeBatch();
  6. 不知道是否需要的,但我也叫pStat.clearBatch()

之後即使所有上述聽起來不錯,這是慢!

我每秒平均只有35條記錄(總共只有8列,只有一個技術性的自動遞增主鍵和一些非空約束)。我計算,這將需要我一個星期的時間插入我所有的20M行...

我做錯了什麼?

我應該在每個批次循環中添加多少行? 10000太多了?

+0

我當時也嘗試過1000行,但我沒有看到任何明顯的改進... – Gevorg

+6

請顯示涉及的表上的SQL,模式並指示索引和觸發器。 – Bohemian

+0

沒有索引,也沒有觸發器。這是有史以來最簡單的表...... – Gevorg

回答