JDBC によるバッチ INSERTS の最適化
プレーン JDBC を使用して INSERT クエリを実行する Java アプリケーションは、ネットワーク遅延によるパフォーマンスの問題に直面することがよくあります。待機時間を短縮するためにバッチ処理が有効になっている間も、クエリは個別の INSERT として順次実行されます。この記事では、この問題に対処する効率的なバッチ INSERT テクニックについて説明します。
INSERT の折りたたみ
次のシナリオを考えてみましょう。
insert into some_table (col1, col2) values (val1, val2) insert into some_table (col1, col2) values (val3, val4) insert into some_table (col1, col2) values (val5, val6)
最適化アプローチの 1 つは次のとおりです。複数の INSERT を 1 つに折りたたむにはquery:
insert into some_table (col1, col2) values (val1, val2), (val3, val4), (val5, val6)
INSERT を組み合わせることで、必要なネットワークのラウンドトリップが減り、パフォーマンスが向上します。
PreparedStatements の使用
別のキーこの手法では、PreparedStatements を利用してクエリ プランをキャッシュします。次のコードは、バッチ INSERT 操作での使用法を示しています。
PreparedStatement ps = c.prepareStatement("INSERT INTO employees VALUES (?, ?)"); ps.setString(1, "John"); ps.setString(2, "Doe"); ps.addBatch(); ps.clearParameters(); ps.setString(1, "Dave"); ps.setString(2, "Smith"); ps.addBatch(); ps.clearParameters(); int[] results = ps.executeBatch();
追加のヒント
以上がパフォーマンスを向上させるために、JDBC でのバッチ INSERT 操作を最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。