용량 계획과 비대화 감사
디스크와 IOPS 증가량을 예측하고 테이블과 인덱스의 비대화를 정기적으로 감사하며 용량이 부족해지기 전에 업그레이드를 계획해보세요.
용량 계획과 비대화 감사은(는) CoddyKit의 무료 SQL Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 SQL Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
예측할 항목
향후 6~12개월에 맞춰 데이터베이스 규모를 설정하려면 다음 항목을 예측해야 합니다.
- 디스크 사용량(데이터 + WAL + 인덱스)
- IOPS 수요
- RAM 작업 집합
- 연결 수
디스크 증가량
최근 증가 추세를 확인하십시오.
SELECT pg_size_pretty(pg_database_size(current_database()));
SELECT pg_size_pretty(pg_total_relation_size(t.oid)) AS total,
relname
FROM pg_class t
WHERE relkind = 'r'
ORDER BY pg_total_relation_size(t.oid) DESC LIMIT 20;테이블별 증가량 추적
메트릭 기록 작업을 예약하고 그래프로 표시하십시오.
INSERT INTO size_history (ts, tablename, size_bytes)
SELECT NOW(), relname, pg_total_relation_size(oid)
FROM pg_class WHERE relkind = 'r';IOPS 추정
읽기 I/O가 집중되는 테이블은 pg_stat_user_tables에서 확인할 수 있습니다.
SELECT relname, seq_tup_read, idx_tup_fetch,
seq_tup_read + idx_tup_fetch AS total_reads
FROM pg_stat_user_tables
ORDER BY total_reads DESC LIMIT 20;RAM 크기 설정
shared_buffers ≈ RAM의 25%입니다. effective_cache_size ≈ 75%입니다(할당량이 아니라 플래너에 제공하는 힌트). 연결별 work_mem × 연결 수가 사용 가능한 RAM을 초과해서는 안 됩니다.
팽창 감사
죽은 행이 가장 많이 발생하는 테이블을 찾으십시오.
SELECT relname,
n_live_tup,
n_dead_tup,
round(n_dead_tup::numeric / NULLIF(n_live_tup, 0), 2) AS dead_ratio,
last_autovacuum
FROM pg_stat_user_tables
ORDER BY n_dead_tup DESC
LIMIT 20;인덱스 팽창
pgstattuple 또는 기본 제공 도구를 사용하십시오.
CREATE EXTENSION pgstattuple;
SELECT relname,
pg_size_pretty(pg_relation_size(indexrelid)) AS size,
(pgstatindex(indexrelid::regclass)).leaf_fragmentation
FROM pg_stat_user_indexes
ORDER BY pg_relation_size(indexrelid) DESC LIMIT 20;사용하지 않는 인덱스
찾아서 삭제하십시오. 쓰기 작업에 비용이 발생합니다.
SELECT schemaname, relname, indexrelname,
pg_size_pretty(pg_relation_size(indexrelid))
FROM pg_stat_user_indexes
WHERE idx_scan = 0
AND indexrelname NOT LIKE '%_pkey'
ORDER BY pg_relation_size(indexrelid) DESC;연결 감사
연결된 클라이언트 수와 각 클라이언트의 상태를 확인하십시오.
SELECT datname, usename, application_name, state, COUNT(*)
FROM pg_stat_activity
GROUP BY 1,2,3,4 ORDER BY 5 DESC;장시간 실행되는 트랜잭션
VACUUM 작업이 실행되지 못하는 원인입니다.
SELECT pid, state, xact_start, NOW() - xact_start AS xact_age, query
FROM pg_stat_activity
WHERE xact_start IS NOT NULL
ORDER BY xact_age DESC NULLS LAST LIMIT 20;WAL과 아카이브
아카이브 스토리지의 규모를 정하려면 WAL 생성 속도를 모니터링하십시오.
SELECT pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_lsn(), '0/0')) AS total_wal_generated;장애 조치를 위한 계획
복제본의 디스크는 기본 서버와 일치해야 합니다. 복제본의 따라잡기 속도가 기본 서버의 쓰기 속도 이상인지 확인하십시오.
요약
용량 계획은 올바른 메트릭을 그래프로 표시하는 작업입니다.
- 테이블별 크기 증가량
- 죽은 행 비율
- 사용하지 않는 인덱스
- VACUUM을 차단하는 장시간 실행 트랜잭션
- 연결 수
빠른 확인
VACUUM 계획을 세울 때 죽은 행이 가장 많이 발생하는 테이블을 찾으려면 어떤 뷰를 조회해야 할까요?
자주 묻는 질문
“용량 계획과 비대화 감사” 강의는 무료인가요?
네 — “용량 계획과 비대화 감사” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 SQL Academy 강의 전체를 잠금 해제할 수 있습니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“용량 계획과 비대화 감사”에서 뭘 배우나요?
디스크와 IOPS 증가량을 예측하고 테이블과 인덱스의 비대화를 정기적으로 감사하며 용량이 부족해지기 전에 업그레이드를 계획해보세요. 브라우저에서 직접 실행하는 실습 코드로 SQL Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
SQL Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 SQL Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“용량 계획과 비대화 감사” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 SQL Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 SQL Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.