3

毎晩、以下を使用して 200 GB のデータベースをダンプして復元します。

# Production, PG 9:
pg_dump DATNAME | some-irrelevant-pipe

# QA, PG 8.3:
some-irrelevant-pipe | psql -d DATNAME

8.3 で 9 からのダンプを復元するには、テキスト ベースのバックアップを使用する必要がありました。

復元は非常に遅く、不当に遅いです。ログがこれらでいっぱいであることに気付きました:

2011-05-22 08:02:47 CDT LOG:  checkpoints are occurring too frequently (9 seconds apart)
2011-05-22 08:02:47 CDT HINT:  Consider increasing the configuration parameter "checkpoint_segments".
2011-05-22 08:02:54 CDT LOG:  checkpoints are occurring too frequently (7 seconds apart)
2011-05-22 08:02:54 CDT HINT:  Consider increasing the configuration parameter "checkpoint_segments".

私の質問は: の設定がcheckpoint_segmentsボトルネックである可能性はありますか? プロセスをスピードアップするために調整できる他のパラメーターは何ですか?

そのマシンには 4 GB の RAM があります。postgresql.conf のその他の関連する可能性のある設定は次のとおりです。

shared_buffers = 1000MB
work_mem = 200MB
maintenance_work_mem = 200MB
effective_cache_size = 2000MB
# fsync and checkpoint settings are default
4

2 に答える 2

4

これを読みましたか?特にセクション14.4.9を参照してください

于 2011-05-26T16:34:15.270 に答える
3

データベースを復元するために、以下を変更します。

# I don't think PostgreSQL 8.3 supports synchronous_commit
synchronous_commit = off
# only change fsync = off if your version of PG is too old to support synchronous_commit. If you do support synchronous_commit, don't ever change fsync to anything but on. Ever.
#fsync = off
checkpoint_segments = 25

checkpoint_segmentsに関しては、その値をディスク コントローラーの書き込みバッファーのサイズに設定します。25 = 400MB

また、psql単一のトランザクションですべてをロードしていることを確認してください。

some-irrelevant-pipe | psql -1 -d DATNAME
于 2011-05-26T18:26:48.607 に答える