해시 파티셔닝

해시 파티셔닝은 큰 테이블을 해시 함수를 적용하여 지정된 열(일반적으로 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 고유성이 중요할 때 유용합니다. 그러나 구현하기 전에 제한 사항과 쿼리 패턴을 신중하게 고려하는 것이 중요합니다.