데이터베이스 파티셔닝과 파티션 프루닝 개념 정리

@ZungTa · 2026-03-04 수요일 · 1 min read

요약

대용량 테이블 조회 성능을 높이기 위해 데이터를 물리적으로 나누는 파티션의 기본 개념과, 쿼리 시 불필요한 파티션을 자동 제외해 성능을 극대화하는 파티션 프루닝의 원리 및 주의사항(컬럼 가공 금지 등)에 대한 개념 정리

파티셔닝 (Partitioning)

파티셔닝은 대용량 테이블이나 인덱스를 관리하기 쉬운 작은 물리적 단위로 나누어 저장하는 기법

보통 데이터가 매우 많을 때 적용한다. (예를 들어 3천만 건 이상)

쿼리 조건에 파티션과 관련된 컬럼이 들어가면 필요한 파티션만 탐색하므로 성능에 이점이 있다.

생성일 같은 날짜 컬럼으로 월별로 파티션을 나눌 수 있다.

매월 담당자가 직접 생성하지 않고도 자동으로 생성되게 설정이 가능하다. (Oracle은 되는데 DBMS 별로 상이할 수 있다.)

데이터 분포가 고르게 되는 컬럼을 설정하는 것이 좋다. (한 가지 값이 대부분인 컬럼은 파티셔닝에 적합하지 않다.)

파티션 프루닝 (Partition Pruning)

데이터베이스에서 쿼리를 실행할 때, 조건절을 분석하여 조회 대상과 상관없는 불필요한 파티션을 검색 범위에서 제외하는 최적화 기법

쿼리에 어떤 파티션을 사용할지 명시하지 않아도 되고, 파티션과 관련된 컬럼이 포함되어 있으면 동작한다.

인덱스와 마찬가지로 파티션 키 컬럼을 함수 등으로 가공하면 프루닝이 작동하지 않는다. (예시 SUBSTR(reg_date, 1, 4) = '2026')

조건절에 범위로 조건을 걸어도 작동한다. (reg_date BETWEEN '2026-01-01' AND '2026-05-31')

@ZungTa
I'm a backend developer
© ZungTa Devlog, Built with Gatsby