3

PostgreSQL のシステム テーブルの 1 つを使用して、いくつかのテーブルの行数の見積もりを取得します。これらの推定値を改善するには、統計が最新である必要があることを理解しています。ここのウィキは、「ANALYZEこれらの統計を最新の状態に保つのに十分なテーブルで実行している」ことを確認する必要があると述べています。

特定のテーブルが最終的に非常に頻繁に書き込まれたり更新されたりすることを期待しています (たとえば、1 秒あたり約 150 回が私の球場です。これは私にとって「かなり頻繁」ですが、それが実際にどのように修飾されるかはわかりません)。 DBの)。カウントは 1 秒に 1 回程度行われる必要があり、テーブルで変更された行数をある程度の精度で反映する値を返す必要があると思います (つまり、数が変更された場合は奇妙になります)。その期間に多くの挿入があった場合、数秒後に変更されません)。

「十分」の適切な値は何ですか? ANALYZEテーブルでの実行を自動化する方法はありますか? さらに情報が必要な場合は、そう言ってください。できるだけ早く投稿を編集します.

どうもありがとうございました!

4

1 に答える 1

2

AutoVacuumあなたがやろうとしていることを処理できるはずです。実行中の場合は、必要に応じてパラメータを調整できautovacuum_analyze_threshold (integer)ますpostgresql.conf

ドキュメントごと:

autovacuum_analyze_threshold (整数)

1 つのテーブルで ANALYZE をトリガーするために必要な、挿入、更新、または削除されたタプルの最小数を指定します。デフォルトは 50 タプルです。このパラメータは、postgresql.conf ファイルまたはサーバー コマンド ラインでのみ設定できます。この設定は、ストレージ パラメータを変更することで、個々のテーブルでオーバーライドできます。

この数値は実行頻度を保証するものではなく、最小しきい値にすぎないことに注意してください。ほとんどの構成オプションと同様に、いくつかの値を使用していくつかのテストを実行して、精度とパフォーマンスの最適なトレードオフを取得し、それがニーズを満たしていることを確認することをお勧めします。

于 2013-01-29T15:07:53.137 に答える