shikoan’s memo

プログラミング初心者のチラ裏

ぷろぐらみんぐ帳

PostgreSQLでテーブル、インデックスの合計容量を取得する

探してたら古い情報しかなかったのでメモ。最新バージョンのドキュメントだと、結構明瞭に記述できるようになっている。

SELECT relname,
pg_size_pretty(pg_total_relation_size(relid)) AS totalsize,
pg_size_pretty(pg_table_size(relid)) AS tablesize,
pg_size_pretty(pg_indexes_size(relid)) AS indexsize 
FROM pg_stat_user_tables ORDER BY relid DESC LIMIT 3;

 relname | totalsize | tablesize | indexsize
---------+-----------+-----------+-----------
 five    | 8029 MB   | 7814 MB   | 214 MB
 three   | 5098 MB   | 4884 MB   | 214 MB
 one     | 2582 MB   | 2368 MB   | 214 MB
(3 rows)

ORDERとかLIMITとかは必要に応じていじってちょ。参考↓

9.26. システム管理関数