[解決済み] PostgreSQL: pg_dump, pg_restore の性能改善
2023-04-10 03:07:44
質問
私が始めたころは
pg_dump
をデフォルトのプレーンフォーマットで使っていました。 無教養でした。
調査によって、時間とファイルサイズを改善するために
pg_dump -Fc | gzip -9 -c > dumpfile.gz
. 私は啓発されました。
いざ、データベースを新たに作ろうとすると
# create tablespace dbname location '/SAN/dbname';
# create database dbname tablespace dbname;
# alter database dbname set temp_tablespaces = dbname;
% gunzip dumpfile.gz # to evaluate restore time without a piped uncompression
% pg_restore -d dbname dumpfile # into a new, empty database defined above
私は不勉強だと思いました。復元には12時間かかり、データベースはそのほんの一部にしかならないのです。
# select pg_size_pretty(pg_database_size('dbname'));
47 GB
このデータベースは数テラバイトになることが予想されるので、今パフォーマンスを改善することを検討する必要があります。
ご教示ください。
どのように解決するのですか?
まず、ディスクセットアップから妥当な IO パフォーマンスを得ていることを確認します。次に、PostgreSQL のインストールが適切にチューニングされていることを確認します。特に
shared_buffers
が正しく設定されている必要があります。
maintenance_work_mem
はリストア中に増加させる必要があります。
full_page_writes
はリストア中はオフにする必要があります。
wal_buffers
はリストア中に 16MB に増加する必要があります。
checkpoint_segments
はリストア中に 16 のようなものに増やさなければなりません。無理なロギング (実行されたすべてのステートメントのロギングなど) は行わないようにしましょう。
auto_vacuum
はリストア中は無効にしてください。
8.4を使用している場合、pg_restoreの--jobsオプションで並列リストアも試してみてください。
関連
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] PostgreSQLの場合。PostgreSQLのテーブルを表示する
-
[解決済み] PostgreSQLの "DESCRIBE TABLE"
-
[解決済み] PostgreSQL コマンドラインユーティリティ: psql を終了する方法
-
[解決済み] 0.1fを0にすると、なぜ10倍もパフォーマンスが落ちるのですか?
-
[解決済み] PostgreSQLのユーザーパスワードを変更する方法を教えてください。
-
[解決済み] どのバージョンのPostgreSQLを使用していますか?
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
-
[解決済み】Mac OS XでPostgreSQLサーバーを起動するには?
-
[解決済み] S3での1ディレクトリあたりの最大ファイル数
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Scalaのパターンマッチはバイトコードレベルでどのように実装されているのですか?
-
[解決済み] ファイルキャッシュをクリアしてパフォーマンステストを繰り返す
-
[解決済み] Entity Frameworkのクエリは遅いが、SqlQueryの同じSQLは速い。
-
[解決済み] translateZ(0)に対するCSSのパフォーマンス
-
[解決済み] Rでdata.frameをマージ/ジョインする最速の方法は何ですか?
-
[解決済み] RustのOption型のオーバーヘッドとは?
-
[解決済み] EBPフレームポインタレジスタの目的は何ですか?
-
[解決済み] Jaro-Winkler距離とLevenshtein距離の違い?[クローズド]
-
[解決済み] Rでループが遅いのはなぜですか?
-
[解決済み] Laravelは本当にこんなに遅いのか?