파티션 전체를 효율적으로 조회하기
파티션 가지치기의 이점을 얻는 쿼리를 작성하고 EXPLAIN으로 가지치기가 적용되는지 확인해보세요.
파티션 전체를 효율적으로 조회하기은(는) CoddyKit의 무료 SQL Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 SQL Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
파티션 키로 필터링
WHERE 절에 파티션 키가 포함될 때만 가지치기가 작동합니다.
-- Prunes (uses date partitioning):
SELECT * FROM events WHERE ts >= '2024-03-01' AND ts < '2024-04-01';
-- No pruning — scans all partitions:
SELECT * FROM events WHERE user_id = 42;복합 가지치기
플래너는 여러 단계로 파티션을 나눈 테이블에서 여러 키를 기준으로 가지치기할 수 있습니다.
SELECT * FROM events
WHERE ts >= '2024-03-01' AND ts < '2024-04-01'
AND user_id = 42;
-- Prunes by date AND by hash partition.EXPLAIN에 표시되는 가지치기
가지치기가 실제로 수행되는지 확인하려면 실행 계획을 살펴보십시오.
EXPLAIN SELECT * FROM events WHERE ts >= '2024-03-01' AND ts < '2024-04-01';
-- Append
-- -> Seq Scan on events_2024_q1
-- Only Q1 partition shown; others pruned.제약 조건 제외와 파티션 가지치기 비교
최신 PG는 기본적으로 빠른 "파티션 가지치기"를 사용합니다. 이전의 "제약 조건 제외"는 더 느렸으므로 enable_partition_pruning = on으로 설정되어 있는지 확인하십시오.
실행 시간 가지치기
매개변수화된 쿼리(PREPARE)를 사용하더라도 PG는 실행 시간에 가지치기를 수행할 수 있습니다.
PREPARE p(timestamptz, timestamptz) AS
SELECT * FROM events WHERE ts >= $1 AND ts < $2;
EXECUTE p('2024-03-01', '2024-04-01');
-- Pruning happens at execute, not at parse.파티션 간 인덱스
인덱스는 파티션으로 전파됩니다. 인덱싱된 열에 대한 쿼리는 모든 파티션에서 작동하지만, 플래너는 각 파티션의 인덱스를 검사합니다.
파티션 간 집계
파티션 키를 기준으로 GROUP BY를 수행할 때 가장 큰 이점을 얻습니다. 다른 열을 기준으로 GROUP BY를 수행하면 모든 파티션을 검사합니다.
파티션별 병렬 실행
PostgreSQL은 파티션 전체의 검사를 병렬로 실행할 수 있습니다(PG 11+).
SET max_parallel_workers_per_gather = 4;
EXPLAIN SELECT COUNT(*) FROM events;
-- Parallel Append over partitions.파티션 테이블 간 조인
두 파티션 테이블이 파티션 키를 공유하면 "파티션별 조인"이 더 빠릅니다. 각 파티션을 독립적으로 조인하기 때문입니다.
SET enable_partitionwise_join = on;
-- Now PG can join events to event_metrics partition-by-partition.흔한 실수 피하기
- WHERE에서 파티션 키에 함수를 적용하지 마십시오. 가지치기가 작동하지 않게 됩니다.
- 쿼리에 파티션 키를 포함하는 것을 잊지 마십시오.
- 수천 개의 작은 파티션으로 나누지 마십시오. 계획 수립 비용이 지배적이 됩니다.
적절한 파티션 수
수천 개가 아니라 수십 개에서 100개 안팎의 파티션을 목표로 하십시오. 각 파티션에는 계획 수립 비용이 발생합니다. 매우 세밀하게 나눌 필요가 있다면 하위 파티션으로 나누십시오.
파티션별 유지 관리
VACUUM, ANALYZE, REINDEX는 파티션별로 실행되며 병렬로 실행할 수도 있습니다. 적절한 범위 안에서 파티션이 많을수록 이점이 누적됩니다.
요약
파티셔닝은 파티션 키로 필터링하는 쿼리에서 가장 큰 효과를 냅니다.
- 파티션 키에 대한 WHERE → 가지치기
- EXPLAIN으로 확인
- 일치하는 조인에는 파티션별 조인 활성화
- 지나치게 많은 파티션으로 나누지 않기
빠른 확인
events가 ts를 기준으로 월별 파티션으로 나뉘어 있습니다. 어떤 쿼리가 파티션 가지치기의 이점을 얻습니까?
자주 묻는 질문
“파티션 전체를 효율적으로 조회하기” 강의는 무료인가요?
네 — “파티션 전체를 효율적으로 조회하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 SQL Academy 강의 전체를 잠금 해제할 수 있습니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“파티션 전체를 효율적으로 조회하기”에서 뭘 배우나요?
파티션 가지치기의 이점을 얻는 쿼리를 작성하고 EXPLAIN으로 가지치기가 적용되는지 확인해보세요. 브라우저에서 직접 실행하는 실습 코드로 SQL Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
SQL Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 SQL Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“파티션 전체를 효율적으로 조회하기” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 SQL Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 SQL Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 파티션을 사용하는 이유: 가지치기와 유지 관리
- 범위, 목록, 해시 파티셔닝
- 파티션 분리 및 연결
- 파티션 전체를 효율적으로 조회하기