2011年11月20日日曜日

postgres テーブルの統計情報の表示

SELECT
st.relname,
n_tup_ins,
n_tup_upd,
n_tup_del,
pg_size_pretty(pg_relation_size(st.relid) + CASE WHEN cl.reltoastrelid = 0 THEN 0 ELSE pg_relation_size(cl.reltoastrelid) + COALESCE((SELECT SUM(pg_relation_size(indexrelid)) FROM pg_index WHERE indrelid=cl.reltoastrelid)::int8, 0) END + COALESCE((SELECT SUM(pg_relation_size(indexrelid)) FROM pg_index WHERE indrelid=st.relid)::int8, 0)) AS size
FROM
pg_stat_all_tables st JOIN pg_class cl on cl.oid=st.relid
WHERE
schemaname = 'public'
ORDER BY
relname
-----------
pg_size_pretty(bigint)
 容量単位で目で見て理解できる形式にバイト数に領域を変換します。
pg_relation_size(oid)
 指定されたOIDを持つテーブルもしくはインデックスで使用されるディスク領域
pg_relation_size(text)
 指定された名前を持つテーブルもしくはインデックスで使用されるディスク領域。テーブル名はスキーマ名で条件付けられることもあります。

-----------
結果:
relname | n_tup_ins | n_tup_upd | n_tup_del | size
------------------------------+-----------+-----------+-----------+------------
news_tab | 37 | 47 | 43 | 128 kB
user_tab | 0 | 0 | 0 | 33 MB
order_tab | 2 | 6374426 | 0 | 2944 MB
(3 rows)

0 件のコメント:

コメントを投稿