해시 파티셔닝

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