web-dev-qa-db-ja.com

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

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;

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

14
Richard

これは、マテリアライズドビューがrelpages >= 8pg_class、そうである必要はありません。実際には空でもかまいません-pg_class.relispopulated = FALSE。この場合、対応するディスクファイルのサイズはzeroです。

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

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 =外部テーブル

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

24