[pgsql-jp: 40694] Re: pgsql_tmp以下の一時ファイルが残存するパターンについて

Tatsuhito Kasahara kasahara.tatsuhito @ oss.ntt.co.jp
2011年 2月 21日 (月) 15:16:28 JST


こんにちは、笠原と申します。

toshihideka4316 @ zenrin.co.jp wrote:
> PostgreSQL運用時に一時ファイルの容量が約130ギガまで肥大し、
> PostgreSQLを再起動し運用を再開したところ100Mまで減少したため、
> 一時ファイルが増加した原因をつきとめようと考えています。
> そこで質問なのですが異常終了時に一時ファイルが残存することはありえるのでしょ
> うか。
PostgreSQLの挙動としては、残存します。

> 残存しうる場合、どのようなパターンで残存するのでしょうか。
基本的に、pgsql_tmp には、ハッシュやディスクソートなどの処理で一時的に
作成されるデータが書き込まれます。なので、複雑なクエリや思い
ソートを実施するとファイルが生成されます。作成された一時ファイルは、
その処理が正常に終了すると削除されます。
つまり正常処理が実施されている期間はファイルが存在します。

また、一時ファイルを作成したバックエンドの異常終了時にも残存します。
# 残存するのは、クラッシュ時にデバッグ用途・・などの理由だったと思います。

ただ、PostgreSQLの再起動時にクリアされるので何も処理がないのに長期間
残存することはそう無いと思います。

> また、どのようなパターンで一時ファイルが急激に増加するのでしょうか。
> ご教授願います。
上記の通り、特に複雑な SQL が多重に実施されるとpgsql_tmp が消費されやすいです。

以上、ご参考になれば。

-- 
NTT OSSセンタ

笠原辰仁


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