postgresのDB容量、テーブルごとの容量を調べるとき
運用中のDBの容量を知りたいとき、あると思います。
そんな方法
DBごとでも、テーブルごとでも流れは同じ
調べたい対象のidを調べる → そのidからデータ量を調べる
です。
ポスグレには、pg_stag_database という統計情報のテーブルがあるようなんで、
それを使います。
select datid,datname from pg_stat_database;
全DBのdatidというidが取得できるんで、必要なDBのdatidを別ファイルにでも移しておいて
du -sh /Library/PostgreSQL/9.2/data/base/[datid]
これで取得できますー
※パスは各自、環境に合わせてね!
テーブルごとには
select relfilenode,relname from pg_class order by relname;
※スキーマごとに取得する方法はわかりませんでした--;
そして取得したrelfilenode のカラムの値で
du -sh /Library/PostgreSQL/9.2/data/base/[datid]/[relfilenode]
これで取得できますー
こんな感じです。