0Pricing
SQL Academy · 강의

파티션을 사용하는 이유: 가지치기와 유지 관리

파티셔닝의 장점인 쿼리 가지치기, 더 빠른 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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 파티션을 사용하는 이유: 가지치기와 유지 관리
  2. 범위, 목록, 해시 파티셔닝
  3. 파티션 분리 및 연결
  4. 파티션 전체를 효율적으로 조회하기
← SQL Academy(으)로 돌아가기