PostgreSQLで現在接続中のDBのサイズを取得する方法

他にもっと簡単な方法があるかもしれないけど、必要な度に調べるのが面倒なのでメモ。


接続中のDB名を取得

test_db=> SELECT current_database();
 current_database
------------------
 test_db


接続中のDBサイズの取得

test_db=> SELECT pg_size_pretty(pg_database_size(datname)) FROM pg_database WHERE datname=(SELECT current_database());
 pg_size_pretty
----------------
 46 MB


VIEWの作成

test_db=> CREATE VIEW getDBsize AS SELECT pg_size_pretty(pg_database_size(datname)) FROM pg_database WHERE datname=(SELECT current_database());


VIEWの確認

test_db=> SELECT * FROM getdbsize;
 pg_size_pretty
----------------
 46 MB


接続中のDBだけでなく、全てのDBのサイズを取得する場合

test_db=>SELECT datname, pg_size_pretty(pg_database_size(datname)) FROM pg_database;


参考
http://www.postgresql.jp/document/8.4/html/functions-info.html
http://www.postgresql.jp/document/8.4/html/functions-admin.html