max_rows_for_lazy_final
지연 실행 FINAL 최적화에 사용되는 Set의 최대 행 수입니다. 이 값을 초과하면 일반 FINAL로 전환됩니다.max_rows_in_distinct
DISTINCT 사용 시 서로 다른 행의 최대 개수입니다.max_rows_in_join
테이블 조인 시 사용되는 우측 데이터 구조(일반적으로 hash table)의 행 수를 제한합니다. 이 설정은 SELECT … JOIN 작업과 Join 테이블 엔진에 적용됩니다. 쿼리에 여러 조인이 포함된 경우 ClickHouse는 각 중간 결과에 대해 이 설정을 확인합니다. 이는 모든 해시 기반join_algorithm에 적용되는 엄격한 상한값으로, 제한에
도달하면 쿼리는 join_overflow_mode에 따라
throw되거나 break됩니다.
이 설정이 조인을 디스크로 스필하게 만드는 일은 없으며, 그 결정은
max_bytes_before_external_join과
max_bytes_ratio_before_external_join이
담당합니다.
예외는 legacy_join_size_limits_trigger_spilling입니다. 이 설정이 켜져 있으면 이미 디스크에서 실행 중인
조인의 해당 파트는 이 제한을 상한값이 아닌 추가적인 스필 트리거로 취급합니다.
가능한 값:
- 양의 정수.
0— 행 수에 제한이 없습니다.
max_rows_in_set
서브쿼리로 생성된 IN 절의 데이터 Set에 허용되는 최대 행 수입니다.max_rows_in_set_to_optimize_join
조인 전에 각 테이블의 행 Set으로 상대 테이블을 필터링하는 데 사용하는 Set의 최대 크기입니다. 가능한 값:- 0 — 비활성화합니다.
- 임의의 양의 정수.
max_rows_to_group_by
집계에서 생성되는 고유 키의 최대 개수입니다. 이 설정을 사용하면 집계 시 메모리 사용량을 제한할 수 있습니다. GROUP BY 중 집계로 인해 지정된 개수보다 많은 행(고유한 GROUP BY 키)이 생성되면, 동작은 ‘group_by_overflow_mode’에 따라 결정됩니다. 기본값은throw이지만,
근사 GROUP BY 모드로 전환할 수도 있습니다.
max_rows_to_read
쿼리를 실행할 때 테이블에서 읽을 수 있는 최대 행 수입니다. 이 제한은 처리되는 각 데이터 청크마다 검사되며, 가장 깊은 테이블 표현식에만 적용됩니다. 원격 서버에서 읽는 경우에는 원격 서버에서만 검사됩니다.max_rows_to_read_leaf
분산 쿼리를 실행할 때 리프 노드의 로컬 테이블에서 읽을 수 있는 최대 행 수입니다. 분산 쿼리는 각 세그먼트(리프)에 여러 개의 하위 쿼리를 보낼 수 있지만, 이 제한은 리프 노드의 읽기 단계에서만 확인되며 루트 노드의 결과 병합 단계에서는 적용되지 않습니다. 예를 들어 클러스터가 2개의 세그먼트로 구성되어 있고, 각 세그먼트에 100개의 행이 있는 테이블이 포함되어 있다고 가정합니다. 두 테이블의 모든 데이터를 읽는 분산 쿼리에max_rows_to_read=150 설정을 사용하면 전체 행 수가 200행이므로 실패합니다. 반면 max_rows_to_read_leaf=150인 쿼리는 리프 노드가 최대 100행만 읽으므로 성공합니다.
이 제한은 처리되는 각 데이터 청크마다 확인됩니다.
이 설정은
prefer_localhost_replica=1과 함께 사용할 경우 안정적으로 동작하지 않습니다.max_rows_to_sort
정렬 전에 허용되는 최대 행 수입니다. 이 설정을 사용하면 정렬 시 메모리 활용을 제한할 수 있습니다. ORDER BY 작업에서 지정한 수보다 많은 레코드를 처리해야 하는 경우, 동작은sort_overflow_mode에 따라 결정되며 기본값은 throw입니다.