GROUP BY 관련 설정

GROUP BY 관련 설정

GROUP BY 집계의 동작 방식을 제어하는 설정들이에요. 고유 키 수가 한도를 초과할 때의 처리, 2단계 집계 전환 임계값, 집계 키의 Nullable 처리 등을 다룬답니다. 이 설정들은 system.settings 테이블에서 확인할 수 있고 소스 코드에서 자동 생성된 값들이에요.

출처: 문서

본문

이 설정들은 system.settings에서 확인할 수 있고, 소스 코드에서 자동 생성된 값들이에요.

group_by_overflow_mode

집계의 고유 키 수가 한도를 초과할 때 무슨 일이 일어날지 설정해요:

  • throw: 예외를 던져요.
  • break: 쿼리 실행을 멈추고 부분 결과를 반환해요.
  • any: 세트에 들어간 키에 대해 집계를 계속하지만, 세트에 새 키는 추가하지 않아요.

any 값을 사용하면 GROUP BY의 근사치를 실행할 수 있어요. 이 근사치의 품질은 데이터의 통계적 성질에 달려 있어요.

group_by_top_k_optimization_observation_rows

enable_group_by_top_k_optimization용: 입력 행의 10% 미만을 건너뛰고 용량보다 적은 키를 evict한 전체 top-K 힙을 freeze하기 전에 각 집계 스트림이 관찰하는 행 수예요. 힙이 freeze되면 최적화가 비활성화된 것처럼 집계가 계속돼요.

유효 창은 힙 예약 크기의 최소 2배이므로, 힙은 판단되기 전에 항상 채워질 기회를 가져요. 0은 이 freeze를 비활성화해요(경계 tie-set이 힙을 과도하게 키울 때는 여전히 freeze).

이는 ORDER BY 없이 GROUP BY keys LIMIT K 쿼리에는 영향이 없어요. 그 형태에서는 freeze가 항상 비활성화되는데, 그 계획에는 힙이 해시 테이블을 제한하는 동안에만 이득인 합성 정렬이 포함되어 있어 힙을 freeze하면 최적화되지 않은 계획보다 느린 계획이 남게 되거든요.

group_by_two_level_threshold

어느 키 수에서부터 2단계 집계가 시작되는지를 나타내요. 0 - 임계값이 설정되지 않음.

group_by_two_level_threshold_bytes

집계 상태의 바이트 크기가 얼마일 때부터 2단계 집계가 사용되기 시작하는지를 나타내요. 0 - 임계값이 설정되지 않음. 2단계 집계는 두 임계값 중 적어도 하나가 트리거될 때 사용돼요.

group_by_use_nulls

GROUP BY 절이 집계 키의 타입을 다루는 방식을 변경해요.

ROLLUP, CUBE, GROUPING SETS 지정자를 사용하면 일부 집계 키가 일부 결과 행을 만드는 데 사용되지 않을 수 있어요. 이런 키의 컬럼은 이 설정에 따라 해당 행에서 기본값 또는 NULL로 채워져요.

가능한 값:

  • 0 — 누락된 값을 만드는 데 집계 키 타입의 기본값이 사용돼요.
  • 1 — ClickHouse가 SQL 표준이 말하는 것과 같은 방식으로 GROUP BY를 실행해요. 집계 키의 타입이 Nullable로 변환돼요. 해당 집계 키의 컬럼은 이를 사용하지 않은 행에 대해 NULL로 채워져요.

함께 보기:

  • GROUP BY 절

더 알아보기 (Learn more)