1

約200のサブテーブルで構成される中規模のテーブル(約150億行)があります(つまり、各サブテーブルはマザーテーブルを継承し、パーティション分割を最適化するための制約チェックがあります)。

各テーブルをロードする plpgsql コードは、各サブテーブルのインデックスも生成しますが、残念ながら (これは関数であるため)、vacuum analyze subtable;ロードしてインデックスを作成したばかりのサブテーブルに対して a を実行することもできません。

したがって、vacuum analyzeDB 全体の次の処理が完了するまで、マザー テーブルのすべてのクエリはインデックスを使用せず、インデックスを使用しません (説明で明らかになります)。

これはすべて PostgreSQL 8.2.14 であることに注意してください。

質問

  1. plpgsql関数に「砂糖を上に乗せて、トランザクションブロックを終了してください」と言ってもらう方法はありvacuum analyze subtableますか?
  2. ワイルドカード ( ) を使用して一度に多くのテーブルをバキューム/分析する方法はありvacuum analyze schema.subtables*ますか?
  3. あるいは、1 つのスキーマだけをバキューム/分析することは可能ですか?
  4. postgresql 内からプログラムで 200 のサブテーブルをバキューム/分析する他の方法はありますか (はい、すべてのサブテーブルの名前をダンプし、トスして味付けし、いくつかの perl を psql スクリプトに入れ、実行することができます)。それは、しかし、それはちょっと醜いです)。
4

1 に答える 1

1

これはすべて PostgreSQL 8.2.14 であることに注意してください。

8.2 は 5 年間の実行の後、昨年サポートが終了しました。8.2.14 には、2009 年 3 月 16 日以降に発見されたセキュリティの脆弱性とバグの多くが修正されていません。この 10 年間のバージョンに移行する必要があります。

postgresql 内からプログラムで 200 のサブテーブルをバキューム/分析する他の方法はありますか (はい、すべてのサブテーブルの名前をダンプし、トスして味付けして、いくつかの perl を psql スクリプトに入れ、実行することができます)。それは、しかし、それはちょっと醜いです)。

エントリを作成pg_autovacuumして、autovacuum デーモンに任せることができます。もちろん、このデーモンは近年大幅に改善されているため、更新するもう 1 つの理由です。

于 2012-08-07T20:20:37.070 に答える