파티션을 사용하는 이유: 가지치기와 유지 관리
파티셔닝의 장점인 쿼리 가지치기, 더 빠른 VACUUM, 간편한 보관 처리를 이해해보세요.
파티션을 사용하는 이유: 가지치기와 유지 관리은(는) CoddyKit의 무료 SQL Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 SQL Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
파티셔닝이란
하나의 논리적 테이블을 여러 개의 물리적 테이블(파티션)로 나누는 것입니다. 각 파티션에는 일부 행만 저장됩니다. 쿼리는 관련된 파티션만 스캔합니다.
왜 사용해야 할까요
큰 테이블에는 다음과 같은 문제가 있습니다.
- 인덱스가 매우 커져 조회가 느려집니다.
- VACUUM에 몇 시간이 걸립니다.
- 백업이 느립니다.
- 일부 쿼리는 불필요하게 전체를 스캔합니다.
파티셔닝은 이 네 가지 문제를 모두 해결합니다.
파티션 가지치기
플래너는 WHERE 조건과 일치할 수 없는 파티션을 SKIP할 수 있습니다.
EXPLAIN SELECT * FROM events
WHERE ts >= '2024-03-01' AND ts < '2024-04-01';
-- Only March partition scanned; older partitions skipped.
-- Plan rows: 1M, not 100B.파티셔닝을 사용하는 경우
다음과 같은 경우 파티셔닝을 사용하십시오.
- 테이블 크기가 100GB 이상인 경우
- 자연스러운 파티션 키(날짜, 테넌트, 지역)가 있는 경우
- 대부분의 쿼리가 해당 키로 필터링되는 경우
- 오래된 데이터를 보관하거나 삭제할 수 있는 경우
파티셔닝을 사용하지 말아야 하는 경우
멋져 보인다는 이유만으로 파티셔닝하지 마십시오.
- 몇 GB보다 작은 테이블에는 이점이 없습니다.
- 쿼리가 파티션 키로 필터링되지 않으면 가지치기가 전혀 이루어지지 않습니다.
- 운영 복잡성(파티션 관리)이 증가합니다.
파티셔닝 전략
PostgreSQL은 다음 세 가지 방식을 지원합니다.
- 범위 — 파티션이 값의 범위를 담당합니다(날짜, ID).
- 목록 — 파티션이 특정 값을 저장합니다(국가, 테넌트).
- 해시 — 균등한 분산을 위한 모듈러 해시를 사용합니다.
저렴한 삭제
파티션 삭제는 즉시 완료됩니다. 행을 하나씩 삭제할 필요가 없습니다.
DROP TABLE events_2023;
-- 100GB gone in milliseconds, no VACUUM aftermath.더 쉬운 유지 관리
VACUUM, REINDEX, ANALYZE는 파티션별로 실행됩니다. 거대한 하나의 작업이 아니라 파티션 사이에 유지 관리 시간을 배정할 수 있습니다.
파티션별로 더 작은 인덱스
각 파티션에는 자체 인덱스가 있습니다. 1TB 파티션보다 1GB 파티션에 만든 B-tree의 단계 수가 더 적으므로 조회가 빠릅니다.
파티셔닝은 도구이지 만능 해결책이 아닙니다
성능이 저절로 향상되는 것은 아닙니다. 파티션 키로 필터링하는 쿼리에는 가지치기를 제공하고 유지 관리를 쉽게 해 줍니다. 이 조건에 해당하지 않는다면 복잡성만 늘어납니다.
PostgreSQL 네이티브(선언적) 파티셔닝
PG 10부터 사용할 수 있습니다. 각 파티션은 실제 테이블입니다.
CREATE TABLE events (
id BIGSERIAL,
ts TIMESTAMPTZ NOT NULL,
user_id BIGINT,
data JSONB
) PARTITION BY RANGE (ts);
CREATE TABLE events_2024_01 PARTITION OF events
FOR VALUES FROM ('2024-01-01') TO ('2024-02-01');PG10 이전: 상속 파티셔닝
기존 시스템에서는 테이블 상속과 트리거를 사용합니다. 새 코드에서는 피하십시오. 선언적 파티셔닝이 더 단순하고 빠릅니다.
요약
파티셔닝은 크고 시간 구간별로 나뉘거나 테넌트별로 분리된 테이블에서 특히 효과적입니다.
- 가지치기로 관련 없는 파티션을 건너뜁니다.
- 파티션별 유지 관리가 더 빠릅니다.
- DROP TABLE이 100GB DELETE를 대신할 수 있습니다.
- 만능 해결책은 아닙니다. 쿼리가 파티션 키와 일치할 때만 도움이 됩니다.
빠른 확인
테이블을 월별로 파티셔닝한 뒤 날짜 조건 없이 SELECT * FROM events WHERE country = 'US'를 실행하면 파티셔닝이 도움이 됩니까?
자주 묻는 질문
“파티션을 사용하는 이유: 가지치기와 유지 관리” 강의는 무료인가요?
네 — “파티션을 사용하는 이유: 가지치기와 유지 관리” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 SQL Academy 강의 전체를 잠금 해제할 수 있습니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“파티션을 사용하는 이유: 가지치기와 유지 관리”에서 뭘 배우나요?
파티셔닝의 장점인 쿼리 가지치기, 더 빠른 VACUUM, 간편한 보관 처리를 이해해보세요. 브라우저에서 직접 실행하는 실습 코드로 SQL Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
SQL Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 SQL Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“파티션을 사용하는 이유: 가지치기와 유지 관리” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 SQL Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 SQL Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 파티션을 사용하는 이유: 가지치기와 유지 관리
- 범위, 목록, 해시 파티셔닝
- 파티션 분리 및 연결
- 파티션 전체를 효율적으로 조회하기