Postgresのpgsql_tmpディレクトリについて

Postgres#initdb#postgres#バックアップ

この記事は13年以上前に書かれたものです。内容が古くなっている可能性があります。

先日、とあるサイトのPostgresフルバックアップ時に

サイトが閲覧できないと現象がありました。

またか。。と思ってDBサイズを確認すると100GBくらい。

監視モニタを見ても確かにロード値が高い時で10~15くらい。

これはたしかに重たいと思い、稼働してから一回もinitdbをしていなかったので

initdbをする事に。

がしかし、initdb前にPostgresを再起動したところ、DBサイズが

一気に5GBくらいに減りました。

あれ?

最悪DB構成が壊れたのかなと思いましたが、正常にデータ更新も

できており問題なし。

なんでだろうと思い、前日のフルバックアップファイルを解凍して

どこの容量が減ったか確認。

見てみると、前日のフルバックアップにはpgsql_tmpという

ディレクトリがありここが大量に容量くってました。

PGDATA/base/pgsql_tmp 94GB

で、再起動後はこのディレクトリはなし。

いろいろググっていると、こちらに記載がありました。

なるほど。要はここにファイルが残る事はあんまり考えられないが、

一時ファイルを作成したバックエンドの異常終了時にも残存するとの事。

そういえば、このサイトで重たい処理を行っているページがあり

いろいろいじってました。私が。チューニングの為必要だった作業なんです。

現に、pgsql_tmpにあったファイルのタイムスタンプは私がいろいろいじっていた時間。。

ちょっと反省です。