どうやったら簡単に見れるっけ?というのがとっさに出てこなかったのでメモ!
以下の言葉(クエリ)を深く心に刻み込んだ。
SELECT pg_size_pretty(SUM(pg_database_size(datname))) AS cluster_size FROM pg_database;
実行例
postgres=# SELECT pg_size_pretty(SUM(pg_database_size(datname))) AS cluster_size FROM pg_database;
cluster_size
--------------
171 MB
(1 row)
duコマンドの結果として比較しても、ちゃんと一致していることがわかります。
$ du -h $PGDATA/base
7.2M data/base/1
7.0M data/base/13289
157M data/base/13294
171M data/base
簡単に補足
-
実行ロールについて
一般ユーザでも実行可能です。 -
pg_size_pretty()
引数で与えられたバイト数をサイズの単位を付けた書式に変換してくれるシステム管理関数。 -
pg_database_size()
引数で与えられたデータベースが使用するディスク容量を返すシステム管理関数。 -
pg_database
データベースの情報が格納されているシステムカタログ。
datname:データベースの名前
2016/9/10追記
本記事では、「データベースクラスタのサイズ=テーブルのサイズ($PGDATA/base)」として記述しています。
「データベースクラスタ=$PGDATA」とする場合、PostgreSQLの設定によっては、ログファイルやWALファイルが$PGDATA配下に格納されるので本書の内容だけではクラスタのサイズを見積もることはできない点にご注意ください。