ブログトップ 記事一覧 ログイン 無料ブログ開設

y-kawazの日記 このページをアンテナに追加 RSSフィード Twitter

2009-02-26

PostgreSQLでテーブルサイズを確認する

ちょくちょく使うけど毎回考えるのが面倒になったのでコピペ用メモ。

SELECT
  relname,
  relkind,
  to_char(reltuples, '999,999,999') as rows,
  to_char(pg_relation_size(relname), '999,999,999,999') as bytes
FROM pg_class
WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE nspname='public');

↓こんな感じの出力が出来る。

      relname       | relkind |     rows     |      bytes       
--------------------+---------+--------------+------------------
 usertrack          | r       |      217,425 |       18,202,624
 url                | r       |       26,589 |        4,767,744
 url_id_seq         | S       |            1 |            8,192
 usertrack_uid      | i       |      217,425 |        8,044,544
 usertrack_accessed | i       |      217,425 |        5,103,616
 url_pkey           | i       |       26,589 |          614,400
 url_url_index      | i       |       26,589 |        2,785,280
(7 rows)

relkindは見れば分かるだろうけど、r=テーブル、Sシーケンス、i=インデックス、v=ビューね。

VACUUM ANALYZE とか REINDEX とかしてから実行した方がより正確な値が取れるので忘れないで。(長期放置してたDBとかだと数倍レベルの誤差が出るときもある)

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

リンク元