分享一个统计 postgresql 表大小的 sql
with table_size_in_bytes as (
select table_schema
, table_name
, pg_size_pretty(pg_total_relation_size(table_schema||'.'||table_name)::bigint)
as size_in_humanreadable
, pg_total_relation_size(table_schema||'.'||table_name) as size_in_byte
from information_schema.tables
)
(
select 'ALL_SCHEMA' as table_schema
, 'ALL_TABLE' as table_name
, pg_size_pretty(sum(size_in_byte)::bigint) as size_in_humanreadable
, sum(size_in_byte) as size_in_byte
from
table_size_in_bytes
)
union all
(
select table_schema
, 'ALL_TABLE' as table_name
, pg_size_pretty(sum(size_in_byte)::bigint) as size_in_humanreadable
, sum(size_in_byte) as size_in_byte
from
table_size_in_bytes
group by table_schema
order by sum(size_in_byte) desc
)
union all
(
select table_schema
, table_name
, size_in_humanreadable
, size_in_byte
from
table_size_in_bytes
order by size_in_byte desc
);