1

java(jdbc)を使用して、10Gbファイルからpostgresデータベーステーブルにデータをインポートしています。インポートプロセスは完了するまでに12時間以上かかるため、インポートプロセスを改善する必要があります。挿入用のコピーコマンドを試してみました。一部のselectコマンドは、挿入テーブルでも実行されます。誰かが速度を改善する方法を提案できますか?

4

1 に答える 1

4

INSERT数百万行が必要な場合、通常、標準SQLステートメントのオーバーヘッドは大きすぎます。10 GiBのデータは実際にはそれほど多くはありませんが、確かに多すぎますINSERT(大量のトランザクションがあるか、INSERTごとにコミット/ロールバックします)。

素敵な14.4があります。公式ドキュメントにデータベースの章を追加します。14.4.2。使用COPYはあなたにとって特に興味深いものです:

COPY一連のINSERTコマンドを使用する代わりに、1つのコマンドですべての行をロードするために使用します。このCOPYコマンドは、多数の行をロードするために最適化されています。より柔軟性はありませんINSERTが、大量のデータをロードする場合のオーバーヘッドは大幅に少なくなります。は単一のコマンドであるためCOPY、このメソッドを使用してテーブルにデータを入力する場合は、自動コミットを無効にする必要はありません。

参照:

于 2012-11-25T17:02:53.997 に答える