PostgreSQLデータベースがディスクを圧迫したので

2009/06/19 | PostgreSQL

お客さんに貸してるサーバのディスク容量が残りわずかになってしまった。原因はわかっている。PostgreSQLのメンテナンスが不十分だったからだ。サーバの中にはいくつかのPostgreSQLデータベースが稼動しているが、果たしてどれが原因なのか。どのデータベースがどれだけの容量を使用しているのか調べたのでメモ。

まずPostgreSQLのデータがあるディレクトリに移動する。RedHat系OSでは以下の場所に存在する。

/var/lib/pgsql/

おなじみ、設定ファイル等が設置されている場所だ。この中の奥の階層にデータは格納されている。

/var/lib/pgsql/data/base/

上記の中に入ると、数字だけで構成されたディレクトリが多数存在する。しかも多段の階層で。これだけでは意味がわからない。まずここで、直下の階層についてのみ容量をチェックする。

du –max-depth=1 -h

階層を一つ下って、人間が理解しやすい形式でデータを出力させる。これでひとまず、どのディレクトリがディスクを浪費しているのか把握できる。しかしこのディレクトリ名は何を意味しているのか。

どうやらこれはoidを意味しているらしい。そこでoidとデータベース名を関連付けることさえできれば、どのデータベースがどれだけ容量を使用しているか把握できることになる。それを把握するためのSQL文がコレ。

select datid,datname from pg_stat_database;

これでoidとデータベース名の関連付けができる。
さて、どのデータベースに問題があるのかはすぐにわかったが、どうやって処理しようか。それを現在考え中。頭の痛い課題だ。

コメントを残す


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net