毎日大規模なテーブルから何十万ものレコードを削除してから、新しいデータを使って計算を行い、以前に削除したレコードをすべて置き換えます。私は普通のことだと思ったvacuum tbl
トリックを行うだろう。私はそれがサーバーにディスクスペースを返さないことを知っていますが、(私は削除していたレコードの数だけ挿入していたので、私は思っていました。しかし、テーブルを別の名前空間に移動させた後(無関係の理由で)、テーブルのサイズは117GBから44GBになりました。だから... ..."replacement inserts"のディスク節約戦略
はので、私のテーブルが膨らまず、これよりも優れた戦略があります:
delete from tbl where ...etc... -- hundreds of thousands of rows removed
insert into tbl (...etc...) values (...etc...) -- hundreds of thousands of rows added back (fresh calcs)
.. repeat the above about 10 times a day ...
vacuum tbl
https://www.postgresql.org/docs/9.6/static/sql-vacuum.html
のPostgreSQL 9.6
私は実際には、テーブルのサイズを小さくするためにやった中であります私の答えはここです: integer out of range and remaining disk space too small to convert id to bigint and other solutions
編集1: vacuum full
は私にとってはあまりにも制限されています。私は24/7のものを処理していますので、私はそのようなロックを持つことはできませんし、私の利用可能なディスクスペースは、任意の時点でかなり制限されています。これについてもっと良い方法でやろうとしています。
絶対的なものは何もありません。いくつかの特定の基準によって、何かが何か他のものより優れている可能性があります。 'VACUUM FULL'は、CPU/IOとロックのコストのためにデータを圧縮するのに役立ちます。 – zerkms
@zerkms - 私の編集を見てください1.ありがとう! – mountainclimber