同じテーブルに対していくつかの\copy
コマンドを並行して実行することは可能ですか? pg_restore
にも同様のものが存在することは知っていますが、それによって作業がテーブル間で分割されます。
40〜1億行の範囲のファイルで作業しています。インデックスを削除して後で作成するにもかかわらず、それでもかなりの時間がかかります。
ここで2つの質問があります。
はい、複数のファイルをロードできます。機能的には、COPY
コマンドを何回実行してもかまいません。複数回実行できます。
通常、ターゲットが同じテーブルの場合、または同じテーブルスペース上にある場合でも、copyコマンドを分割してもあまりメリットはありません。 1つのバックグラウンドライタープロセスでディスクを簡単に飽和させることができます。これが問題になるのは、計算量の多いものがある場合だけです。さらに、コピーを分割しない理由はいくつかあります。たとえば、 同じトランザクションでテーブルを作成してロードする場合 WALが少なくなります。
COPY
は、以前のトランザクションと同じトランザクション内で使用した場合に最速ですCREATE TABLE
またはTRUNCATE
コマンド。このような場合、WALを書き込む必要はありません。エラーが発生した場合、新しくロードされたデータを含むファイルはとにかく削除されます。ただし、この考慮事項は、すべてのコマンドがWALを書き込まなければならないため、wal_levelが最小の場合にのみ適用されます。
より高速な書き込みが必要な場合は、 Non-Durable Settings を確認してください