데이터 관리 기법파티셔닝은 기본적으로 데이터 관리 기법이며 쿼리 최적화 도구는 아닙니다. 특정 워크로드에서는 성능 향상에 도움이 될 수 있지만, 쿼리 속도를 높이기 위한 첫 번째 수단으로 사용해서는 안 됩니다. 파티셔닝 키는 그 영향과 특성을 명확히 이해한 상태에서 신중하게 선택해야 하며, 데이터 수명 주기 요구 사항이나 잘 이해된 액세스 패턴에 부합하는 경우에만 적용해야 합니다.
PARTITION BY 절을 사용해 정의하며, 일반적으로 시간 인터벌, 범주 또는 기타 비즈니스상 중요한 차원을 기준으로 행을 그룹화하는 데 사용됩니다. 파티셔닝 표현식의 각 고유 값은 디스크에 각각의 물리적 파티션을 형성하며, ClickHouse는 각 값에 해당하는 데이터를 별도의 파트에 저장합니다. 파티셔닝은 데이터 관리를 개선하고 보존 정책을 단순화하며, 일부 쿼리 패턴에 도움이 될 수 있습니다.
예를 들어, 다음 영국 부동산 실거래가 데이터셋 테이블은 toStartOfMonth(date)를 파티셔닝 키로 사용합니다.
toStartOfMonth(date)를 기준으로 분할합니다. 그런 다음 식별된 각 파티션에 대해, 여러 순차적 단계를 거쳐 행을 평소와 같이 처리합니다(① 정렬, ② 컬럼으로 분할, ③ 압축, ④ 디스크에 쓰기).
파티셔닝에 대한 더 자세한 설명은 이 가이드를 참조하십시오.
파티셔닝이 활성화되면, ClickHouse는 파티션을 넘어서지는 않고 각 파티션 내부에서만 데이터 파트를 머지합니다. 이를 위의 예시 테이블에 대해 개략적으로 나타내면 다음과 같습니다:
파티셔닝의 활용
낮은 카디널리티 파티셔닝 키 선택
toStartOfMonth(date)로 파티셔닝되어 있다면, 월 기준 필터링 시 엔진은 관련 없는 파티션과 그 파트를 완전히 건너뛸 수 있습니다.
파티셔닝은 일부 쿼리 패턴에서 성능을 개선할 수 있지만, 기본적으로는 데이터 관리 기능입니다. 많은 경우 모든 파티션에 걸쳐 쿼리하면 데이터 단편화가 증가하고 스캔해야 하는 파트 수가 많아지므로, 파티셔닝되지 않은 테이블을 사용하는 것보다 더 느릴 수 있습니다. 파티셔닝은 신중하게 사용하고, 선택한 키가 항상 낮은 카디널리티를 가지며 데이터 수명 주기 정책(예: TTL을 통한 보존)과도 부합하는지 확인하십시오. 파티셔닝이 필요한지 확신이 없다면 먼저 파티셔닝 없이 시작한 뒤, 관찰된 액세스 패턴을 바탕으로 나중에 최적화하는 것이 좋습니다.