PostgreSQL でのデータベース毎のディスク容量をみる
psql -tAF $' \t' -c 'select pg_size_pretty(pg_database_size(datname)),datname from pg_database order by pg_database_size(datname) desc;' | less
外形的にOSからみた容量なら
(ruby -e 'dats=Hash[* `psql -tAF#{39.chr} #{39.chr} -c #{39.chr}select datid,datname from pg_stat_database order by datid;#{39.chr}`.split ]; Hash[* %x[du -sh #{dats.keys.map{ |id| "/var/lib/pgsql9/data/base/#{id}" }.join(" ")}].split ].map{ |size,dir|id=dir.split("/")[-1]; "#{size}\t#{dats[id]} \t#{id}\n" }.join.display' ; du -sh /var/lib/pgsql9/ ) | sort -hr | less
たいした差は無いが後者の方が若干多いか。 '/var/lib/pgsql9/data/base/' はデータのある場所、Amazon Linux でのパッケージインストールの場合、そして postgresユーザ。バッククォートと %x が混じってるのに特に意味は無い、タブ文字の前の空白文字は自分の状況での表示の調整。
参考
- システム管理関数 データベースオブジェクト管理関数 pg_database_size pg_size_pretty
- 統計情報コレクタ pg_stat_databaseビュー
- 「psql -tAF $' \t' 」のことは昔書いた