オートバイを使用しないでください。 GreenplumはPostgreSQLではなく、自動バキュームはデータベースでは機能しません。 PostgreSQLでGreenplumの投稿にタグを付けないことを強くお勧めします。誤った情報が得られる可能性が高いからです。それは、OSXとBSDにタグを付けることについての質問を投稿するようなものです。肥大化して
真空ヒープ・テーブル:
psql -t -A -c "SELECT E'VACUUM \"' || bdinspname || E'\".\"' || bdirelname || E'\";' FROM gp_toolkit.gp_bloat_diag WHERE bdinspname <> 'pg_catalog'" | psql -e
しかし、ほとんどのGreenplumであなたのテーブルのすべての可能性が高いMVCCを使用して、代わりに短いため、「アペンド最適化された」またはAOを使用して、ヒープベースではありません。可視性マップを使用して、削除された行を非表示にし、ファイルはより小さく、より速くなります。また、表を圧縮して列指向にすることもできます。
AOテーブルもメンテナンスが必要ですが、ヒープテーブルと異なり、gp_appendonly_compaction_threshold GUCによって制御された圧縮しきい値が組み込まれています。隠し行の割合が10%を超えると、すべてのAOテーブルとデータベースがテーブルを自動的に再構築します。
GreenplumはまだPostgreSQLから継承されたフリーズ時代の問題を抱えています。このスクリプトは通常、行を返しませんが、非常に長い時間触れていないテーブルを使用している古いインストールでは、テーブルを空にすることがあります。
vacuum_freeze_min_age=$(psql -t -A -c "show vacuum_freeze_min_age;")
psql -t -A -c "SELECT E'VACUUM \"' || n.nspname || E'\".\"' || c.relname || E'\";' FROM pg_class c join pg_namespace n ON c.relnamespace = n.oid WHERE age(relfrozenxid) > $vacuum_freeze_min_age AND c.relkind = 'r'" | psql -e
あなたがいる間に、分析されたbを定期的にすべてのテーブルを分析するようにスケジュールする必要があります。例:
analyzedb -d gpadmin -s tpcds
はカタログを忘れないでください!
psql -t -A -c "SELECT E'VACUUM ANALYZE \"' || n.nspname || E'\".\"' || c.relname || E'\";' FROM pg_class c JOIN pg_namespace n ON c.relnamespace = n.oid WHERE n.nspname = 'pg_catalog' AND c.relkind = 'r'" | psql -e
このカタログはインデックスを再度インデックスを付け:
reindexdb -s
それはPostgreSQLの8.2に基づいている場合、それは自動バキュームを持っている必要があります。あなた自身でそれを理解しようとするのではなく、それを使用してください。 –
返信ありがとうございます、はいautovacuumがありますが、私は多くのテーブルを持っており、それぞれのサイズは約150GBです。だから、手作業も必要です。 – Anvesh
なぜですか?あなたが必要とするように自動バキュームを設定できませんか? –