2011-09-01 46 views
8

がここに取り引きです:JDBCの一括挿入が遅いです!本当に遅い?

  1. 私はconn.autoCommit(false);
  2. を設定DriverManager
  3. を使用して接続connを作成それから私は私がpStat.setでいくつかのパラメータを設定しPreparedStatement pStat = conn.prepareStatement(insert_string_with_parameter);
  4. を持っている...そして私が追加しますpStat.addBatch();
  5. 10000行ごとに(私はaddBatch() 10000回を呼び出します)、私はpStat.executeBatch();
  6. を呼び出します
  7. ない、必要に応じて確認してくださいしかし、私は右

pStat.clearBatch()も呼び出すことは私にはいいですねでも、上記のすべての場合、これはSLOWです!

1秒あたり平均35レコード(計8列のみ、テクニカルオートインクリメントプライマリキーと非ヌル制約)があります。 20Mの行をすべて挿入するのに1週間かかると計算しています...

何か間違っていますか?

バッチサイクルごとに追加する行数はいくつですか? 10000が多すぎますか?

+0

私は一度に1000行でも試してみましたが、私は任意の大幅な改善を見ていない... – Gevorg

+6

は、SQLを表示するスキーマとテーブル(s)は、関係にあり、インデックスとトリガを記入してください。 – Bohemian

+0

インデックスがなく、トリガーもありません。今までに一番簡単なテーブルです... – Gevorg

答えて

関連する問題