5

最近、本番用の新しい Heroku アプリを作成し、そのデータベースにステージング データベースから取得したバックアップを設定しました。

問題は、Heroku の Postgres Web ページに示されている 2 つのデータベースのデータベース サイズが異なることです。

バックアップを取得した最初のデータベースは 360 MB で、データが取り込まれた新しいデータベースはわずか 290 MB でした。

バックアップ/ロード プロセス中にエラーは表示されませんでした。2 つのデータベースからバックアップを作成すると、バックアップ ファイルのサイズは同じになります (約 40 MB)。

プロジェクトは問題なく動作しており、2 つのアプリはまったく同じように見えますが、データを失った可能性があり、将来的に問題が発生するのではないかと心配しています。

詳細: 両方のアプリで同じ運用データベース プランを使用しています。

また、最初のデータベースは最初のインスタンスに接続されず (アプリのリソース ページからではなく、Postgres 管理ページから追加されたため)、新しいデータベースは新しいアプリに接続されます。

前もって感謝します

4

2 に答える 2

8

postgresql DB が使用中により多くのスペースを消費しても問題ありません。

その理由はMVCCシステムにあります。データベースにレコードを記録するたびUPDATEに、以前のレコードを書き換えるのではなく、このレコードの別の「バージョン」が作成されます。この「古い」レコードはVACUUM、必要がなくなるとプロセスによって削除されます。

そのため、データベースをバックアップから復元すると、「死んだ」レコードはなく、サイズも小さくなりました。

詳細はこちらhttp://www.postgresql.org/docs/current/static/mvcc.htmlおよびhttp://www.postgresql.org/docs/current/static/sql-vacuum.html

PS 気にする必要はありません。Postgresql はVACUUM自動的に処理します。

于 2012-11-22T08:32:07.947 に答える
0

これが役立つかどうかを確認してください: PostgreSQL データベースのサイズが増加しています

また、各テーブルのサイズを個別に測定し、違いが見られるテーブルについては、レコード数を比較してください: postgresql の合計データベース サイズが個々のテーブル サイズの合計と一致しません

于 2012-11-22T04:26:59.650 に答える