orders 예시

큰 주문 테이블을 날짜 범위로 나누면 필요한 연도만 읽고 운영할 수 있다

핵심은 테이블을 여러 개로 늘리는 것이 아니라, 같은 orders 데이터order_date 범위 기준으로 잘라 읽기와 운영 범위를 줄이는 데 있습니다.

분할 전

하나의 큰 orders 테이블

5년치 주문 1억 건이 한 테이블에 모여 있으면, 연도 조건이 있어도 전체 범위를 건드리기 쉬워집니다.

분할 기준

order_date로 범위를 자른다

연도별 구간을 먼저 정해 두면, 데이터와 운영 단위가 같은 기준으로 움직입니다.

수평 분할은 컬럼을 나누는 것이 아니라 행을 범위별로 나누는 방식입니다.
PARTITION BY RANGE (order_date)
p2022 < DATE '2023-01-01'
p2023 < DATE '2024-01-01'
p2024 < DATE '2025-01-01'
분할 후

같은 orders를 연도 파티션으로 관리

조회 조건이 2023년이면, DBMS는 다른 연도 대신 해당 파티션만 우선 읽습니다.

orders_2020
2020 주문 범위만 저장
orders_2021
2021 주문 범위만 저장
orders_2022
2022 주문 범위만 저장
orders_2023
예: WHERE order_date IN 2023
이 파티션만 집중적으로 스캔
orders_2024
2024 주문 범위만 저장
파티션 효과
무엇이 실제로 쉬워지나
조회
Partition Pruning으로 특정 연도만 읽어 스캔 범위를 줄입니다.
운영
백업, 아카이브, 오래된 데이터 삭제를 파티션 단위로 처리할 수 있습니다.
실행
여러 파티션을 나눠 읽는 쿼리는 병렬 처리에 유리합니다.