[vacuum][1]
テーブルを編集している場合は、サイズ1のディスクがまだ変更されていないことを心配しないでください。スペースは新しい行によって再利用可能とマークされています。したがって、さらに470万行も簡単に追加でき、ディスク上のサイズも増えません。
VACUUMの標準形式では、テーブル内のデッドローバージョンと、 インデックスが削除され、今後の再利用に使用できる領域が示されます。ただし、 は、 特別な場合を除いて、テーブルの末尾にある1つ以上のページが完全にフリーになり、排他的なテーブルロックを簡単に取得できる場合を除き、オペレーティングシステムにスペースを返しません。 対照的に、VACUUM FULLは、デッドスペースのないテーブルファイルの完全な 新しいバージョンを記述することによって、テーブルを積極的に圧縮します。これにより、テーブルのサイズが になりますが、時間がかかります。また、操作 が完了するまで、表の新しいコピーのために余分なディスク容量が でなければなりません。
あなたはディスク上のそれを縮小したい場合は、テーブルをロックし、動作中は、テーブルのサイズと同じくらいの余分なスペースを必要FULL真空にする必要があります。だから、これを試す前にあなたのクォータをチェックしなければならなくなり、あなたのサイトは応答しなくなります。
更新:
あなたはこのようなのpg_classテーブルを照会することによって、ディスク上のデータのサイズに関する大まかなアイデアを得ることができます。
SELECT SUM(relpages*8192) from pg_class
別の方法は、このような性質のクエリです:
SELECT pg_database_size('yourdbname');
このリンク:https://www.postgresql.org/docs/9.5/static/disk-usage.htmlは、ディスクの使用に関する追加情報を提供します。
ありがとうございました。誰か他の解決策が出てくるかどうかを確認するために、これを1日ほど開いたままにしておきます。理想的にはテーブルのサイズを小さくしたいので、次の層にアップグレードするとDBの実際のサイズを見ることができます(64GBの制限に収まるように)ので、私のサイトを持つ余裕はありません応答しない。 – ntesler
興味深い...その結果は約680億だった。そのバイトですか? – ntesler
はい、元の列はページ内にあり、ページは8kですので、私は加算しました。もちろん、真空が完了するまで走った?このpg_class情報は、新しくvacuumされたテーブルに対してのみ正確です。 – e4c5