해시 파티셔닝
해시 파티셔닝은 특정 열, 일반적으로 ID 열에 적용된 해시 함수를 기반으로 대규모 테이블을 더 작고 관리 가능한 파티션으로 나누는 방법입니다. 특정 사용 사례에 대한 독특한 장점을 제공하지만 일부 제한 사항도 함께 존재합니다.
주요 포인트:
-
데이터 분배: 행은 ID의 해시 값 및 나머지 연산으로 파티션에 할당됩니다. 예를 들어,
HASH(ID)
로 파티셔닝하고MODULUS 64
및REMAINDER 1
로 설정한 경우,hash(ID) % 64 == 1
인 행은 해당 파티션에 들어가게 됩니다. -
쿼리 요구 사항: 대부분의 쿼리에
WHERE hashed_column = ?
조건이 포함된 경우에 가장 잘 작동합니다. PostgreSQL이 관련 파티션을 빠르게 식별할 수 있도록 하는 것이죠. -
ID 고유성: 복잡한 목록 파티셔닝을 제외하고는 데이터베이스 수준에서 여러 파티션 간의 ID 고유성을 보장할 수 있는 유일한 파티셔닝 방법입니다.
사전 결정:
- 파티션 수는 테이블 생성 전에 선택되어야 하며 나중에 쉽게 추가할 수 없습니다. 이는 미래 데이터 성장을 예상하는 데 중요합니다.
지원되지 않는 쿼리 유형:
- 범위 쿼리
(WHERE id BETWEEN ? AND ?)
및 다른 키로 조회(WHERE other_id = ?)
는 해시 파티셔닝된 테이블에서 직접 지원되지 않습니다.
고려 사항:
- 미래 성장을 수용하기 위해 많은 수의 파티션을 선택하세요.
- 응용 프로그램 쿼리가 해시 파티셔닝 요구 사항과 일치하는지 확인하세요.
- 범위 쿼리나 다른 키로 조회가 중요한 경우 범위 파티셔닝 또는 목록 파티셔닝과 같은 대안을 평가하세요.
요약하면, 해시 파티셔닝은 특정 시나리오에 대한 귀중한 도구이며, 특히 파티션 간의 ID 고유성이 중요한 경우에 유용합니다. 그러나 구현하기 전에 해당 제한 사항과 쿼리 패턴을 신중하게 고려해야 합니다.