[pgsql-jp: 41355] Re: baseディレクトリの肥大化

kasaharatt @ nttdata.co.jp kasaharatt @ nttdata.co.jp
2013年 2月 20日 (水) 20:48:22 JST


笠原と申します。

> 電源のOFF,ONを100回程度繰り返すと、PostgreSQLのデータディレクトリの
> baseディレクトリの使用領域が増大します。
使用領域の増大ですが、具体的にどうやって調べていますか?
du や df などのコマンドでしょうか?
# zfs-fuseには詳しくないですが、ファイルシステムの特性で実使用量より
  多く消費しているように見える、ということがあるかもしれません・・


あと、具体的に肥大化しているテーブルやインデックスって
分かりそうですか? 
# ちなみに以下のSQL例ではデータベース別に行う必要があります。

-- システムテーブル/インデックスのサイズなど確認
SELECT t.relname, pg_relation_filepath(t.relid), c.reltuples, c.relpages,
       pg_table_size(t.relid) as tsize
FROM pg_stat_sys_tables t, pg_class c
WHERE t.relid = c.oid ORDER BY tsize DESC;

SELECT relname, indexrelname, pg_relation_filepath(indexrelid), pg_relation_size(indexrelid) as isize
FROM pg_stat_sys_indexes
ORDER BY isize DESC;

-- ユーザテーブル/インデックスのサイズなど確認
SELECT t.relname, pg_relation_filepath(t.relid), c.reltuples, c.relpages,
       pg_table_size(t.relid) as tsize
FROM pg_stat_user_tables t, pg_class c
WHERE t.relid = c.oid ORDER BY tsize DESC;

SELECT relname, indexrelname, pg_relation_filepath(indexrelid), pg_relation_size(indexrelid) as isize
FROM pg_stat_user_indexes
ORDER BY isize DESC;


肥大化の前後でオブジェクトのサイズなどを比較してみると、
容量を食っているオブジェクトが分かるかもしれません。

> -----Original Message-----
> From: pgsql-jp-bounces @ ml.postgresql.jp [mailto:pgsql-jp-bounces @ ml.postgresql.jp] On Behalf Of [takapro.com]T.Hashimoto
> Sent: Friday, February 15, 2013 10:45 AM
> To: pgsql-jp @ ml.postgresql.jp
> Subject: [pgsql-jp: 41342] baseディレクトリの肥大化
> 
> 初めて投稿させていただきます。今後とも何卒宜しくお願い致します。
> 
> 本題となりますが、PostgreSQL9.0.5 を組み込みLinuxシステムに
> 利用しています。
> この組み込みシステムは電源OFF,ONのみでシステムを起動、停止する為、
> pg_ctl stopコマンド等やOS自体の正常なシャットダウン等ができない前提と
> します。
> 
> 電源のOFF,ONを100回程度繰り返すと、PostgreSQLのデータディレクトリの
> baseディレクトリの使用領域が増大します。
> 
> vacuumやreindex等を行っても容量は変わらず、oid2nameを利用して
> 該当データベースの使っていないと思われるファイルを手動で削除して
> みましたが、PostgreSQLが起動できる時、起動できない時の差があります。
> この時はもちろんディスク容量が減りますが、起動できない時は
> 
> base/*****/*****
> 
> 上記のファイルがないとログに出力されます。
> 
> ご質問となりますが、
> 
> ・baseディレクトリ以下のファイル管理を確かめる方法はoid2nameより詳細に
>    調べる事は可能なのでしょうか。
> ・電源OFF,ONを100回程度繰り返すようなシステム運用で、baseディレクトリ
>    の肥大化を防ぐ方法はないのでしょうか。
> 
> この様な用途でPostgreSQLを利用するのはまれだと思いますが、ご意見頂きたく存じます。
> 
> --
> 橋本 貴史
> hashimoto @ takapro.com


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