해시 파티셔닝

해시 파티셔닝은 특정 열에 적용된 해시 함수를 기반으로 대규모 테이블을 더 작고 관리하기 쉬운 파티션으로 나누는 방법입니다. 일반적으로 ID 열을 사용합니다. 특정 사용 사례에 대해 고유한 장점을 제공하지만, 한계도 있습니다.

주요 포인트:

  • 데이터 분배: 행은 ID의 해시 값과 모듈러스-나머지 계산을 기반으로 파티션에 할당됩니다.
    예를 들어, HASH(ID)로 파티셔닝하고 MODULUS 64REMAINDER 1을 사용할 경우, hash(ID) % 64 == 1인 행은 해당 파티션으로 이동합니다.

  • 쿼리 요구 사항: 해시 파티셔닝은 대부분의 쿼리에 WHERE hashed_column = ? 조건이 포함될 때 최상의 성능을 발휘합니다.
    이 경우 PostgreSQL이 관련 파티션을 신속하게 식별할 수 있습니다.

  • ID 고유성: 데이터베이스 수준에서 여러 파티션 간의 ID 고유성을 보장할 수 있는 유일한 파티셔닝 방법입니다(복잡한 리스트 파티셔닝 제외).

사전 결정 사항:

  • 파티션 수는 테이블 생성 전에 선택해야 하며, 이후 쉽게 추가할 수 없습니다. 이는 향후 데이터 성장 예측이 중요합니다.

지원되지 않는 쿼리 유형:

  • 범위 쿼리 (WHERE id BETWEEN ? AND ?) 및 다른 키에 의한 조회 (WHERE other_id = ?)는 해시 파티셔닝 테이블에서 직접 지원되지 않습니다.

고려 사항:

  • 향후 성장을 수용할 수 있도록 많은 수의 파티션을 선택합니다.
  • 애플리케이션 쿼리가 해시 파티셔닝 요구 사항과 일치하는지 확인합니다.
  • 범위 쿼리나 다른 키에 의한 조회가 필수적인 경우, 범위 파티셔닝이나 리스트 파티셔닝과 같은 대안을 평가합니다.

요약하면, 해시 파티셔닝은 특정 시나리오에 유용한 도구이며, 특히 파티션 간의 ID 고유성이 중요한 경우에 그렇습니다. 그러나 구현 전에 그 한계와 쿼리 패턴을 신중히 고려하는 것이 중요합니다.