LoginSignup
3
2

More than 5 years have passed since last update.

PostgreSQLのデータベースクラスタのサイズをSQLで確認する

Last updated at Posted at 2016-09-01

どうやったら簡単に見れるっけ?というのがとっさに出てこなかったのでメモ!

以下の言葉(クエリ)を深く心に刻み込んだ。

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配下に格納されるので本書の内容だけではクラスタのサイズを見積もることはできない点にご注意ください。

3
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2