数百のクライアントに配備されたPostgreSQLデータベースサーバを使用する製品があります。そのうちのいくつかは数十ギガバイトのデータを集めています。したがって、次のバージョンでは、徐々にアーカイブする自動クリーンアップ手順を紹介し、夜間バッチジョブ中にDELETE古いレコードを導入します。PostgresQL膨大なテーブル用にVACUUM FULLを自動化
私が正しく理解していれば、autovacuumはタプルを分析して再構成するので、少ないレコードが存在したときと同じパフォーマンスになります。私が正しく理解していればそれだけ FULL VACUUMで発生し、そしてそれは自動バキュームによってトリガされていないので、
実際のディスク・スペースは、解放されません。
私はこれを行う自動化プロセスについて考えていました。
nagios check_postgresで使用されているbloat viewがhttp://wiki.postgresql.org/wiki/Show_database_bloatにあります。
このビューは適切ですか? tbloatが> 2の場合、VACUUM FULLを使用する可能性があることを理解していますか? ibloatが高すぎる場合は、REINDEXを使用できますか?
毎日のバッチジョブとして実行する次のジョブについてのコメントはありますか?もちろんオフ解析専用
select tablename from bloatview order by tbloat desc limit 1
vacuumdb -f -t tablename mydatabase
select tablename, iname from bloatview order by ibloat desc limit 1
reindexdb -t tablename -i iname mydatabase
と
vacuumdb -Z mydatabase
#vacuumは、私はまだ素敵なperlスクリプト内でそれをラップする必要がありますcrontab(私たちはubuntu 12を使っています)、あるいはpostgresqlに何らかの並べ替えがありますスケジューラの私はこれを行うことができますか?この合計超過分は、はるかに簡単な手順がありますか?
vacuumdb -Zはおそらく必要ありませんが、自動バキュームは分析を最新の状態に保つのに非常に有効です。 – greyfairer