PostgreSQLでDBサイズを調べる
自分のプロジェクトで利用しているDBだけであるならば
SELECT pg_database_size('hogehoge');で一発なんだけどなー
あるサーバ内で複数のDBについてそれぞれの容量を一発で確認したい、となるとなかなか方法がないのが実情である。
すぐに思いつくのが
SELECT pg_database_size(という方法なのだが、pg_database_size関数がリストを引き取れない仕様なので、この方法を使うと" more than one row returned by a subquery used as an expression"というエラーになってしまう。
(SELECT datname FROM pg_database)
);
このため思いつくのはシェルでpsqlを使ってpg_databaseにてdatnameの一覧を取得して、その一覧に対してループを回して1個ずつpg_database_sizeを投げて取得する方法だろうなあ。
SQL内で完結できる良い方法がないか、助けてプリーズ。
| 固定リンク
コメント
自分はこうやってます。
SELECT datname, pg_size_pretty(pg_database_size(datname)) FROM pg_database;
投稿: | 2014.06.15 20:44
コメントありがとうございます。
pg_size_pretty関数は恥ずかしながら知りませんでした(^^;
ためしたところお見事、しっかり一覧でサイズを取得できました。pg_size_prettyはformat関数的なものなのですね。勉強になりました。
投稿: かっしい | 2014.06.16 11:23