数百のクライアントに導入されているPostgreSQLデータベースサーバーを使用した製品があります。それらのいくつかは、何年にもわたって数十ギガバイトのデータを収集してきました。そのため、次のバージョンでは、夜間のバッチジョブ中に古いレコードを徐々にアーカイブおよび削除する自動クリーンアップ手順を導入します。
私が正しく理解していれば、autovacuumが開始され、タプルが分析および再編成されるため、レコードが少ない場合と同じようにパフォーマンスが向上します。
実際のディスク容量は、正しく理解していれば解放されません。これは、VACUUM FULLでのみ発生し、 autovacuumによってトリガーされないためです。
だから私はこれを行う自動化されたプロセスについて考えていました。
nagioscheck_postgresで使用されている肥大化ビューをhttp://wiki.postgresql.org/wiki/Show_database_bloatで見つけました。
この見方はいいですか?tbloatが2より大きい場合、VACUUM FULLを使用できることを理解して正しいですか?また、ibloatが高すぎる場合は、REINDEXを使用できますか?
毎日のバッチジョブとして実行する次のジョブに関するコメントはありますか?
vacuumdb -Z mydatabase
#vacuum withanalyze-onlyselect 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
もちろん、それをcrontabの素敵なperlスクリプトでラップする必要があります(ubuntu 12を使用しています)、またはpostgresqlにはこれを行うことができるある種のスケジューラがありますか?
それとも、これは完全にやり過ぎであり、はるかに簡単な手順がありますか?