파티셔닝 힌트 - AWS Clean Rooms

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

파티셔닝 힌트

파티셔닝 힌트는 실행기 노드 간의 데이터 분산을 제어합니다. 여러 파티셔닝 힌트가 지정되면 여러 노드가 논리적 계획에 삽입되지만 최적화 프로그램이 가장 왼쪽에 있는 힌트를 선택합니다.

COALESCE

파티션 수를 지정된 파티션 수로 줄입니다.

파라미터: 숫자 값(필수) - 1~2147483647 사이의 양의 정수여야 합니다.

:

-- Reduce to 5 partitions SELECT /*+ COALESCE(5) */ employee_id, salary FROM employees;

REPARTITION

지정된 파티셔닝 표현식을 사용하여 지정된 수의 파티션으로 데이터를 재파티션합니다. 라운드 로빈 배포를 사용합니다.

파라미터:

  • 숫자 값(선택 사항) - 파티션 수. 1~2147483647 사이의 양의 정수여야 합니다.

  • 열 식별자(선택 사항) - 분할 기준 열입니다. 이러한 열은 입력 스키마에 있어야 합니다.

  • 둘 다 지정하면 숫자 값이 먼저 와야 합니다.

:

-- Repartition to 10 partitions SELECT /*+ REPARTITION(10) */ * FROM employees; -- Repartition by column SELECT /*+ REPARTITION(department) */ * FROM employees; -- Repartition to 8 partitions by department SELECT /*+ REPARTITION(8, department) */ * FROM employees; -- Repartition by multiple columns SELECT /*+ REPARTITION(8, department, location) */ * FROM employees;

REPARTITION_BY_RANGE

지정된 열에서 범위 파티셔닝을 사용하여 지정된 수의 파티션으로 데이터를 재파티션합니다.

파라미터:

  • 숫자 값(선택 사항) - 파티션 수. 1~2147483647 사이의 양의 정수여야 합니다.

  • 열 식별자(선택 사항) - 분할 기준 열입니다. 이러한 열은 입력 스키마에 있어야 합니다.

  • 둘 다 지정하면 숫자 값이 먼저 와야 합니다.

:

SELECT /*+ REPARTITION_BY_RANGE(10) */ * FROM employees; -- Repartition by range on age column SELECT /*+ REPARTITION_BY_RANGE(age) */ * FROM employees; -- Repartition to 5 partitions by range on age SELECT /*+ REPARTITION_BY_RANGE(5, age) */ * FROM employees; -- Repartition by range on multiple columns SELECT /*+ REPARTITION_BY_RANGE(5, age, salary) */ * FROM employees;

재분배

쿼리 결과 출력 파티션을 리밸런싱하여 모든 파티션의 크기가 적절한지(너무 작지도 크지도 않음) 확인합니다. 이는 최선의 작업입니다. 스큐가 있는 경우 AWS Clean Rooms 는 스큐된 파티션을 분할하여 너무 크지 않도록 합니다. 이 힌트는 너무 작거나 큰 파일을 방지하기 위해 쿼리 결과를 테이블에 작성해야 하는 경우에 유용합니다.

파라미터:

  • 숫자 값(선택 사항) - 파티션 수. 1~2147483647 사이의 양의 정수여야 합니다.

  • 열 식별자(선택 사항) - SELECT 출력 목록에 열이 나타나야 합니다.

  • 둘 다 지정하면 숫자 값이 먼저 와야 합니다.

:

-- Rebalance to 10 partitions SELECT /*+ REBALANCE(10) */ employee_id, name FROM employees; -- Rebalance by specific columns in output SELECT /*+ REBALANCE(employee_id, name) */ employee_id, name FROM employees; -- Rebalance to 8 partitions by specific columns SELECT /*+ REBALANCE(8, employee_id, name) */ employee_id, name, department FROM employees;