質問

現在、2つのインデックスと2億5000万のアクティブな行、およびほぼ同じ数(またはそれ以上)のデッド行を持つテーブルをクリーンアップしています。クライアントコンピューター(ラップトップ)からサーバーにVACCUM FULL ANALYZEコマンドを発行しました。過去3〜4日間ほど、ビジネスに取り組んできました。やるべき仕事がたくさんあるので、すぐに終了するのではないかと思っています!

サーバーには、クアッドコードXeon 2.66 GHzプロセッサー、12 GBまたはRAM、およびRAID 1構成の2 x 10K rpm 146 GB SAS HDに接続されたRAIDコントローラーがあります。 Suse Linuxを実行しています。私は疑問に思っています...

今、最初に、VACUUMポストマスタープロセスは1つのコアのみを使用しているようです。第二に、I / Oアイドル時間の比率に対するI / O書き込みが非常に多いということはありません。第三に、 procinfo を呼び出すことで、VACUUMプロセスがほとんどの時間(88%)をI / 0の待機に費やしていると推測できます。

では、RAIDコントローラーを過負荷にするためにスレッドを介してより多くのコアを利用しないのはなぜですか(I / O書き込みのアイドル率を高くする)? I / Oの負荷が高くないのに、なぜI / Oを待っているのですかこれらすべてのパワー/リソースをすぐに使用しても高速化しないのはなぜですか? VACUUMはマルチスレッド対応であり、またそうすべきであるように思えます。特に、巨大なテーブルで動作していて、唯一の動作である場合はそうです!

また、postgresql.confを構成してそのようなVACUUMをマルチスレッド化する方法はありますか?それを殺しても、部分的なクリーンアップの恩恵を受けることができますか?そのテーブルで作業する必要があります。

[私はPostgreSQL 8.1を使用しています]

Thx再び

役に立ちましたか?

解決

使用しているPostgreSQLのバージョンを言うことはありません。 8.0より前のバージョンは可能ですか?

これとまったく同じシナリオがありました。最高のベスト:

  • バキュームを解除する
  • pg_dump -tオプションを使用してテーブルをバックアップします
  • テーブルをドロップ
  • テーブルを復元する

8.xを使用している場合は、autovacuumオプションを確認してください。真空はシングルスレッドです。複数のスレッドを使用するためにできることは何もありません。

他のヒント

簡単なヒント:

  • VACUUM FULL VERBOSEを実行して、何が起きているかを確認できます。
  • VACUUMの前にすべてのインデックスをドロップします。それらをバキュームするよりも再構築する方が高速です。また、VACUUM FULLでは十分でないため(特に8.1などの古いPosgreSQLで)、それらを時々再構築する必要があります。
  • maintenance_work_memを本当に高く設定します。
  • 新しいPostgreSQLを使用します。ところで、8.4ではバキューム処理が大幅に改善されます。

VACUUMの代替手段は、ダンプと復元です。

編集:9.0以降、VACUUM FULLはテーブル全体を書き換えます。基本的にダンプ+復元を行うのと同じことなので、REINDEXを実行する必要はありません。

テーブルをロックし、バキュームの実行を妨げる可能性のある継続的なものがないことを確認しますか?

(とにかく、 vacuum_cost_delay を使用して、真空が生産を中断しないようにします。)

Old VACUUM FULLは化石です。かなり遅いので、後でREINDEXにアクセスできます。使用しないでください。テーブルを本当にデフラグしたい場合は、CLUSTERを使用するか、次のようにします:

ディスク容量が残っていると言います。これはdump& reloadよりもはるかに高速です:

CREATE TABLE newtable AS SELECT * FROM oldtable;
CREATE INDEX bla ON newtable( ... );
ALTER TABLE oldtable RENAME TO archive;
ALTER TABLE newtable RENAME TO oldtable;

これは制約をコピーしないことに注意してください。 CREATE TABLE LIKE ...を使用してそれらをコピーできます。

  

では、スレッドを介してより多くのコアを利用しないのはなぜですか

pgはこれをサポートしていません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top