본문 바로가기
데이터베이스/Postgresql

[PostgresSQL] postgresql Block Size

by cbwstar 2021. 7. 27.
728x90
반응형

postgresql block size 확인 기본은 8192 bytes다

 

SELECT current_setting('block_size');

 

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;

 

728x90
반응형

댓글



"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

loading