ANALYZE <table>;
cronjob 以外で PostgreSQL 12 サーバー上で自動的に実行する最も簡単な方法は何ですか?
毎週何百万もの行が定期的に挿入されるアプリケーションがあり、1 か月ほど経つと、変更されるプライマリ テーブルの統計が古くなるため、クエリ時間が非常に遅くなります。ANALYZE <table>;
テーブルの実行には数分かかり、パフォーマンスの問題はすぐに修正されますが、これを手動ではなく PG サーバー自体で自動的に実行できるように設定する必要があると思います。
答え1
自動バキュームが無効になっているようですが、有効になっていると、すべてのテーブルが定期的に分析され、クエリ プランナーの統計情報が更新されます。
最も簡単な解決策は、autovacuum を再度有効にすることです。autovacuum 設定については、postgresql.conf ファイルを確認してください。
答え2
PostgreSQLには組み込みの自動真空吸引機能があり、必要に応じて有効化して設定する必要があります。通常は*autovacuum_vacuum_threshold*を調整し、自動バキューム分析しきい値変更されたタプルの数に基づいて目的の動作を開始します。
見るhttps://www.postgresql.org/docs/current/routine-vacuuming.html#AUTOVACUUM