[pgsql-jp: 39946] Re: SSD上で運用するとautovacuumが頻繁に立ち上がる

Tatsuhito Kasahara kasahara.tatsuhito @ oss.ntt.co.jp
2009年 7月 31日 (金) 18:51:31 JST


笠原と申します。

加藤 健太 wrote:
> SSDでないサーバでHDDのサーバなのですが、こちらは1000個や3000個の
> データベースがあってもautovacuumはたまにしか起動しません。
> (参照が多く、更新系が少ないというサービスの特徴もありますが)
autovacuum は 自動で VACUUM や ANALYZE を実施しますが、autovacuum による
処理の実施契機は、各テーブルへの INSERT や UPDATE がどれくらい行われているか?
となります。
そのため、参照メインの DB にはあまり autovacuum は実施されません。

> SSDの方はほぼ常にどれかのDBをautovacuumしているので明らかに
> 異常です。また、HDDの方はそれぞれのDBが利用されていますが、SSDの
> 方はまでテストなので、1600のデータベースのうち一つしか利用されておらず、
> ほとんど更新もない状態だと思います。
テスト開始などに一斉に多数の DB へデータをリストアしてテストを開始した場合、
ほぼ全ての DB 内のテーブル が autovacuum の実施契機にひっかかるため、
しばらくの間は autovacuum が実施されたままになるかもしれません。
# しばらく置いておくと当該の事象は落ち着くかも・・
# テスト前などに手動で VACUUM ANALYZE を全 DB に実施しておくのも
  回避手段になります。

または、worker プロセス(実際に autovacuum を実施するプロセス)が
不足しているため、VACUUM/ANALYZE 待ちになっている可能性があります。
autovacuum_max_workers を増やすと、この待ち状態が解消され、常に
atuovacuum が実施されている状態が解消されるかもしれません。

> autovacuumをOffにすれば、もちろん、常に起動される状態は回避できる
> のですが、そのような状態(PostgreSQLがSSDにフィットしていない)でサービス
> として、SSDを採用することはできないので。。
> 
> さわっている感じだと速い気がするので残念です。。



-- 
笠原辰仁
kasahara.tatsuhito @ oss.ntt.co.jp



pgsql-jp メーリングリストの案内