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입니다. 이 설정이 켜져 있으면 이미 디스크에서 실행 중인
조인의 해당 파트는 이 제한을 상한값이 아닌 추가적인 스필 트리거로 취급합니다.
ON 절에서 조인 키가 전혀 결정되지 않으면 선택할 알고리즘이 없습니다. 이때 제한은
block nested loop join이 구체화하는 우측 데이터에
적용되며 디스크로 스필된 블록도 여기에 포함됩니다. 오버플로우 시의 동작은
join_overflow_mode를 따릅니다.
가능한 값:
- 양의 정수.
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입니다.