私は次のプロジェクトのためにさまざまなMVCC対応データベースを検討しており、PostgreSQLが私のレーダーに登場しました。
私のプログラムの要件には、おおよそ次のようなシーケンスが含まれます。
データベースの現在のバージョンからいくつかの情報を読み取り、データの80〜90%を変更して、1つ以上のトランザクションに書き戻します(グリッドの新旧両方の状態が存在するConwayのGame of Lifeでグリッドを更新するようなものを想像してください)が必要です)。
コミット後1〜2分待ちます。この間、クライアントは新しいデータに対して読み取りを発行できます。
繰り返す。
データベースは2〜4GBのようなものに制限されます。
変更の約90%は既存のオブジェクトの更新であり、約5%は新しいオブジェクトであり、約5%は削除されたオブジェクトです。
だから私の質問は、ステップ1.5としてプレーンなVACUUMコマンドを1〜2分ごとに1回実行し、PostgreSQLが毎回2〜3GB以上の変更に対応できるようにすることができるかということです。