問題タブ [pg-restore]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2312 参照

postgresql - -jオプションを使用してpg_restoreing非常に大きな単一テーブルに数時間かかる

私は、7億行以上の単一のテーブル(パーティション分割なし)で作業しています。このデータを別のデータベースにロードしたかったので、次の pg_dump コマンドを使用しました。

宛先システムで、次のコマンドを使用しました。

宛先データベースには、復元しようとしていたテーブルが既にあったため、TRUNCATE を使用してから、すべてのインデックスを削除しました。宛先システムには 32GB の物理メモリがあり、postgres 構成ファイルで次の設定を行いました。

pg_restore の時間を計ると、1 時間で約 1,600 万行しか挿入されません。つまり、データの復元には 40 時間以上 (!) かかります。その後、削除したインデックスと外部制約を作成する必要があり、これにはさらに数時間かかる場合があります。このプロセス全体をより速くするために、何か違うことをすることができると感じています。このプロセスを効率化するのに役立つヒントがあれば教えてください。また、COPY については既に確認しましたが、主キーの順序が維持されないため、このオプションは適切ではありません。データの順序を保持する COPY の特殊な設定を知らない場合は、知っておくとよいでしょう!

全体の目的は、列のいくつかのデータ型を変更することでした。これは、alter table alter column query を使用して行うと、同様の時間がかかっていました。