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 に答える