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