728x90
SMALL
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
LIST
'DB > Postgresql' 카테고리의 다른 글
[postgresql]geometry 컬럼 데이터 update하기 (0) | 2022.11.10 |
---|---|
[PostgreSQL] 테이블 정의서 쿼리 (0) | 2022.08.30 |
[postgresql] loop문, 반복문, 테이블의 loop문, loop문에서 select하여 insert하기 (0) | 2022.08.16 |
[postgresql] 현재시간, 시간 yyyy-mm-dd hh24:mi:ss 등으로 포맷하여 변환하기, interval 사용하여 현재시간보다 10분전 조회 (0) | 2022.08.04 |
[postgresql]generate_series를 활용해 해당 날짜로 더미데이터 만들기 (0) | 2022.08.03 |
댓글