私は、さまざまなロールを持つテーブルを含む大きな(数百ギグの)データベースを管理しており、その中には数百万のレコードを保持しているものもあります。いくつかのテーブルは、多数の挿入と削除のみを受け取り、他のいくつかの挿入と多数の更新のみを受け取ります。
データベースは、16ギガバイトのRAMを備えたDebian 6.0 amd64システム上のPostgreSQL 8.4で実行されます。
質問は、テーブル上の自動バキュームプロセスであり、完了するまでに非常に長い時間(日)かかります。特定のバキュームコマンドにかかる時間を大まかに伝えて、キャンセルするかどうかを判断できるようにしたいと思います。また、postgresバキューム操作の進行状況インジケーターがある場合、それは本当に役立ちます。
編集:
私は防弾ソリューションを探していません。デッドタプルまたは必要なI / Oバイトの数についての大まかなヒントで十分です。いつVACUUM
終了するかわからないのは本当に迷惑です。
pg_catalog.pg_stat_all_tables
デッドタプルの数の列があることを見てきました。そのためANALYZE
、前にテーブルにアクセスする必要がある場合でも、見積もりを行うことができます。一方、autovacuum_vacuum_threshold
およびautovacuum_vacuum_scale_factor
設定だけではpostgres自身があることを証明知っているテーブル上の変化量について何かを、おそらくあまりにもDBAの手にそれを置きます。
実行するクエリがVACUUM VERBOSE
わかりません。実行すると、テーブルだけでなくインデックスも処理されていることがわかります。