データベース毎の容量、 pg_database_size と du -s #{datid}

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 が混じってるのに特に意味は無い、タブ文字の前の空白文字は自分の状況での表示の調整。

参考