요약

  • pg_database 테이블의 정보를 활용하여 DB/스키마별 용량 조회

1. 데이터베이스별 용량

SELECT datname,
       pg_size_pretty(pg_database_size(datname))
FROM pg_database;

2. 스키마별 용량

-- 특정 스키마 용량
SELECT pg_size_pretty(pg_schema_size('schema_name'));
 
-- 전체 스키마 용량
SELECT
    pg_size_pretty(pg_database_size(current_database())) AS db_size,
    schema_name,
    pg_size_pretty(SUM(table_size)::BIGINT) AS disk_space,
    ROUND((SUM(table_size) / pg_database_size(current_database())) * 100, 3) AS ratio
FROM (
    SELECT pg_catalog.pg_namespace.nspname AS schema_name,
           pg_relation_size(pg_catalog.pg_class.oid) AS table_size
    FROM pg_catalog.pg_class
    JOIN pg_catalog.pg_namespace ON relnamespace = pg_catalog.pg_namespace.oid
) AS t
GROUP BY schema_name
ORDER BY ratio DESC;

참고사이트