« PostgreSQLでDecode? | トップページ | ビデオデータのフォーマットに注意(^^; »

2014.04.26

PostgreSQLでDBサイズを調べる

自分のプロジェクトで利用しているDBだけであるならば

SELECT pg_database_size('hogehoge');
で一発なんだけどなー

あるサーバ内で複数のDBについてそれぞれの容量を一発で確認したい、となるとなかなか方法がないのが実情である。
すぐに思いつくのが

SELECT pg_database_size(
(SELECT datname FROM pg_database)
);
という方法なのだが、pg_database_size関数がリストを引き取れない仕様なので、この方法を使うと" more than one row returned by a subquery used as an expression"というエラーになってしまう。

このため思いつくのはシェルでpsqlを使ってpg_databaseにてdatnameの一覧を取得して、その一覧に対してループを回して1個ずつpg_database_sizeを投げて取得する方法だろうなあ。
SQL内で完結できる良い方法がないか、助けてプリーズ。

|

« PostgreSQLでDecode? | トップページ | ビデオデータのフォーマットに注意(^^; »

コメント

自分はこうやってます。

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

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: PostgreSQLでDBサイズを調べる:

« PostgreSQLでDecode? | トップページ | ビデオデータのフォーマットに注意(^^; »