본문으로 바로가기

# PostgreSQL DB size

category Database/PostgreSQL 2020. 9. 15. 13:18

PostgreSQL에서 (테이블, 스키마, 테이블 스페이스) 등의 DB 용량 조회하기 위한 SQL문이다.

 

 

[데이터베이스 총 용량 확인]

select datname, pg_size_pretty(pg_database_size(datname)) from pg_database;

 

[테이블 스페이스 총 용량 확인]

select spcname, pg_size_pretty(pg_tablespace_size(spcname)) from pg_tablespace;

 

[DB의 전체 스키마 조회]

select nspname from pg_catalog.pg_namespace pn;

 

[DB의 전체 테이블 조회]

select tablename from pg_tables;

 

[스키마 용량 조회]

--스키마 사이즈 반환하기 위한 세팅
CREATE OR REPLACE FUNCTION pg_schema_size(text) returns bigint AS $$
select sum(pg_total_relation_size(quote_ident(schemaname) || '.' || quote_ident(tablename)))::bigint from pg_tables where schemaname = $1
$$ language sql;

-- 특정 스키마 사이즈 조회
select pg_size_pretty(pg_schema_size('스키마 명'));

--전체 스키마 크기 출력 [스키마 명 / 디스크 공간 / 할당된 DB 사이즈 / 사용 percent]
SELECT schema_name,
    pg_size_pretty(sum(table_size)::bigint) as "disk space",
    pg_size_pretty(pg_database_size(current_database())) as "DB_size",
    (sum(table_size) / pg_database_size(current_database())) * 100
        as "percent (%)"
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
) t
GROUP BY schema_name
ORDER BY schema_name;

 

[특정 스키마의 테이블 별 사이즈 확인]

 SELECT nspname || '.' || relname AS "relation",
 pg_size_pretty(pg_relation_size(C.oid)) AS "size",
    pg_size_pretty(pg_total_relation_size(C.oid)) AS "total_size"
  FROM pg_class C
  LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
  WHERE nspname IN ('스키마 명') 
    AND C.relkind <> 'i'
    AND nspname !~ '^pg_toast'
  ORDER BY pg_relation_size(C.oid) desc;

'Database > PostgreSQL' 카테고리의 다른 글

# PostgreSQL DB pool + with문 + dynamic query  (0) 2020.09.13
# PostgreSQL upsert  (0) 2020.07.18
# PostgreSQL 절차형SQL_for문_insert  (0) 2020.07.05
PostgreSQL ON DELETE CASCADE  (0) 2020.07.02
PostgreSQL Auto_increment(varchar)  (0) 2020.07.02