Postgres:マテリアライズドビューが使用するディスク容量を確認しますか?


14

Postgresでインデックスとテーブルのサイズを確認する方法を知っています(バージョン9.4を使用しています)。

SELECT
   relname AS objectname,
   relkind AS objecttype,
   reltuples AS "#entries", pg_size_pretty(relpages::bigint*8*1024) AS size
   FROM pg_class
   WHERE relpages >= 8
   ORDER BY relpages DESC;

しかし、これには具体化されたビューは表示されません。使用しているディスク容量を確認するにはどうすればよいですか?

回答:


22

これは、マテリアライズドビューがrelpages >= 8であると仮定していますが、そうpg_classである必要はありません。実際には空である可能性があります-まだ設定されておらず、で示されていpg_class.relispopulated = FALSEます。この場合、対応するディスクファイルのサイズはゼロです。

代わりに試してください:

SELECT relname   AS objectname
     , relkind   AS objecttype
     , reltuples AS entries
     , pg_size_pretty(pg_table_size(oid)) AS size  -- depending - see below
FROM   pg_class
WHERE  relkind IN ('r', 'i', 'm')
ORDER  BY pg_table_size(oid) DESC;

どこで使用可能なタイプがあります

r=通常のテーブル、
i=インデックス、
S=シーケンス、
v=ビュー、
m=マテリアライズドビュー、
c=複合型、
t= TOASTテーブル、
f=外部テーブル

独自に構築するのではなく、データベースオブジェクトサイズ関数のいずれかを使用します。「テーブルのサイズ」はさまざまな方法で定義できることに注意してください。詳細:


1
正解です。サイズによって順序は、人間が読める形式で、あなたしている印刷サイズはソート辞書的に発注することと誤解されることに注意してください
ジャック

@ジャック:良い点。私はより賢明なを追加しましたORDER BY
アーウィンブランドステッター
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.