約200のサブテーブルで構成される中規模のテーブル(約150億行)があります(つまり、各サブテーブルはマザーテーブルを継承し、パーティション分割を最適化するための制約チェックがあります)。
各テーブルをロードする plpgsql コードは、各サブテーブルのインデックスも生成しますが、残念ながら (これは関数であるため)、vacuum analyze subtable;
ロードしてインデックスを作成したばかりのサブテーブルに対して a を実行することもできません。
したがって、vacuum analyze
DB 全体の次の処理が完了するまで、マザー テーブルのすべてのクエリはインデックスを使用せず、インデックスを使用しません (説明で明らかになります)。
これはすべて PostgreSQL 8.2.14 であることに注意してください。
質問
- plpgsql関数に「砂糖を上に乗せて、トランザクションブロックを終了してください」と言ってもらう方法はあり
vacuum analyze subtable
ますか? - ワイルドカード ( ) を使用して一度に多くのテーブルをバキューム/分析する方法はあり
vacuum analyze schema.subtables*
ますか? - あるいは、1 つのスキーマだけをバキューム/分析することは可能ですか?
- postgresql 内からプログラムで 200 のサブテーブルをバキューム/分析する他の方法はありますか (はい、すべてのサブテーブルの名前をダンプし、トスして味付けし、いくつかの perl を psql スクリプトに入れ、実行することができます)。それは、しかし、それはちょっと醜いです)。