이 설정들은 system.settings에서 확인할 수 있으며 소스 코드를 바탕으로 자동 생성됩니다.
max_bytes_before_external_group_by
Cloud 기본값: 레플리카당 메모리 용량의 절반입니다.
외부 메모리에서 GROUP BY 절을 실행할지 여부를 설정합니다.
(외부 메모리에서의 GROUP BY 참조)
가능한 값:
- 단일 GROUP BY 작업에 사용할 수 있는 최대 RAM 용량(바이트)입니다.
0— 외부 메모리에서GROUP BY를 실행하지 않습니다.
max_bytes_before_external_join
버전 이력
| 버전 | 기본값 | 설명 |
|---|---|---|
| 26.4 | 0 | 해시 조인의 자동 디스크 스필을 제어하는 새로운 설정입니다. 0이 아닌 값을 지정하면 스필이 활성화되고 바이트 임계값이 설정됩니다. |
0이 아닌 값으로 설정하고 join_algorithm이 hash, parallel_hash, default 또는 auto인 경우, 오른쪽 데이터가 이 바이트 수를 초과하면 디스크로 스필할 수 있도록 해시 조인이 자동으로 grace hash join으로 변환됩니다. 0(기본값)으로 설정하면 이 절대 바이트 임계값은 비활성화되지만, max_bytes_ratio_before_external_join(기본값 0.5)을 통해 자동 스필이 계속 발생할 수 있습니다. 자동 스필을 완전히 비활성화하려면 두 값 모두 0으로 설정하십시오. 이 설정을 사용하면 조인을 통한 read in order 최적화는 적용되지 않습니다.
max_bytes_before_external_sort
Cloud 기본값: 레플리카당 메모리 용량의 절반입니다.
ORDER BY 절을 외부 메모리를 사용해 실행할지 여부를 설정합니다. ORDER BY 구현 세부 사항을 참조하십시오.
ORDER BY 작업 중 메모리 사용량이 바이트 단위의 이 임계값을 초과하면 "외부 정렬" 모드(중간 데이터를 디스크에 스필)가 활성화됩니다.
가능한 값:
- 단일 ORDER BY 작업에 사용할 수 있는 최대 RAM 용량(바이트)입니다. 권장 값은 사용 가능한 시스템 메모리의 절반입니다.
0— 외부 메모리를 사용하는ORDER BY가 비활성화됩니다.
max_bytes_before_remerge_sort
ORDER BY와 LIMIT를 함께 사용하는 경우, 메모리 사용량이 지정된 임계값을 초과하면 상위 LIMIT개 행만 유지하도록 최종 머지 전에 블록을 추가로 머지합니다.
max_bytes_for_lazy_final
버전 이력
| 버전 | 기본값 | 설명 |
|---|---|---|
| 26.4 | 256000000 | 지연 실행 FINAL 최적화에서 사용하는 집합의 최대 바이트 수에 대한 새로운 설정 |
지연 실행 FINAL 최적화에서 사용하는 집합의 최대 바이트 수입니다. 이 값을 초과하면 일반 FINAL로 되돌아갑니다.
max_bytes_in_distinct
DISTINCT를 사용할 때 해시 테이블이 사용하는 메모리 내 상태의 최대 크기(비압축 바이트 기준)입니다.
max_bytes_in_join
테이블 조인 시 사용되는 오른쪽 데이터 구조(일반적으로 해시 테이블)의 최대 크기(바이트)입니다.
이 설정은 SELECT … JOIN 연산과 Join 테이블 엔진에 적용됩니다.
쿼리에 여러 개의 조인이 포함된 경우 ClickHouse는 모든
중간 결과에 대해 이 설정을 확인합니다. 제한에 도달하면 동작은
선택한 join_algorithm에 따라 달라집니다. 알고리즘별 동작(spill, 재파티셔닝, 전환 또는
join_overflow_mode에 따른 throw/break)은 해당 설정을 참조하십시오.
가능한 값:
- 양의 정수
- 0 — 메모리 제어가 비활성화됩니다.
max_bytes_in_set
서브쿼리로 생성된 IN 절의 집합에서 사용할 수 있는 최대 바이트 수(비압축 데이터 기준)입니다.
max_bytes_ratio_before_external_group_by
버전 이력
| 버전 | 기본값 | 설명 |
|---|---|---|
| 25.1 | 0.5 | 기본적으로 디스크로 자동 스필을 활성화합니다. |
| 24.12 | 0 | 새 설정입니다. |
가용 메모리 중 GROUP BY에 사용할 수 있는 비율입니다. 이 값에 도달하면
집계를 위해 외부 메모리를 사용합니다.
예를 들어 0.6으로 설정하면 실행 시작 시 GROUP BY는 가용 메모리의 60%
(서버/사용자/머지 기준)까지 사용할 수 있으며, 이후에는
외부 집계를 사용하기 시작합니다.
max_bytes_ratio_before_external_join
버전 이력
| 버전 | 기본값 | 설명 |
|---|---|---|
| 26.5 | 0.5 | 새로운 설정: 해시 조인의 스필 임계값으로 사용되는 가용 메모리 비율입니다. 기본값은 `0.5`이며, `max_bytes_ratio_before_external_group_by` 및 `max_bytes_ratio_before_external_sort`와 동일한 방식으로 활성화됩니다. 절대값 설정인 `max_bytes_before_external_join`과 함께 사용되며, 둘 중 더 작은 값이 적용됩니다. |
JOIN에 사용할 수 있는 가용 메모리 비율입니다. 이 값에 도달하면 해시 조인이 grace hash join으로 전환되어 오른쪽 데이터를 디스크로 스필합니다.
예를 들어 0.6으로 설정하면 실행 시작 시 JOIN의 오른쪽 해시 테이블이 가용 메모리(서버/사용자/머지에 할당된 메모리 기준)의 60%까지 사용할 수 있으며, 그 이후부터는 디스크로 스필하기 시작합니다.
max_bytes_before_external_join과 max_bytes_ratio_before_external_join이 모두 설정된 경우 계산된 임계값 중 더 작은 값이 사용됩니다. 비율이 0이면 절대값 설정만 적용됩니다.
join_algorithm이 hash, parallel_hash, default, auto 중 하나이고 임시 데이터 경로가 구성된 경우에만 적용됩니다.
max_bytes_ratio_before_external_sort
버전 이력
| 버전 | 기본값 | 설명 |
|---|---|---|
| 25.1 | 0.5 | 기본적으로 디스크 자동 스필을 활성화합니다. |
| 24.12 | 0 | 새 설정입니다. |
ORDER BY에 사용할 수 있는 가용 메모리의 비율입니다. 이 값에 도달하면 외부 정렬이 사용됩니다.
예를 들어 0.6으로 설정하면 실행 시작 시 ORDER BY에서 가용 메모리(서버/사용자/머지 기준)의 60%까지 사용할 수 있고, 그 이후부터는 외부 정렬을 사용하기 시작합니다.
참고로 max_bytes_before_external_sort는 계속 적용되며, 정렬 block이 max_bytes_before_external_sort보다 큰 경우에만 디스크로 스필됩니다.
max_bytes_to_read
쿼리 실행 시 테이블에서 읽을 수 있는 최대 바이트 수(압축되지 않은 데이터 기준)입니다. 이 제한은 처리되는 각 데이터 청크마다 확인되며, 가장 안쪽의 테이블 표현식에만 적용됩니다. 원격 서버에서 읽는 경우에는 원격 서버에서만 확인됩니다.
max_bytes_to_read_leaf
분산 쿼리를 실행할 때 리프 노드의 로컬 테이블에서 읽을 수 있는 최대 바이트 수(비압축 데이터 기준)입니다. 분산 쿼리는 각 세그먼트(리프)에 여러 개의 하위 쿼리를 보낼 수 있지만, 이 제한은 리프 노드의 읽기 단계에서만 검사되며 루트 노드에서 결과를 병합하는 단계에서는 무시됩니다.
예를 들어, 클러스터가 2개의 세그먼트로 구성되어 있고 각 세그먼트에
100바이트의 데이터가 있는 테이블이 있다고 가정합니다. max_bytes_to_read=150
설정으로 두 테이블의 모든 데이터를 읽도록 하는 분산 쿼리는 전체 크기가
200바이트가 되므로 실패합니다. max_bytes_to_read_leaf=150인 쿼리는
리프 노드가 최대 100바이트만 읽으므로 성공합니다.
이 제한은 처리되는 각 데이터 청크에 대해 검사됩니다.
max_bytes_to_sort
정렬 전에 처리할 수 있는 최대 바이트 수입니다. ORDER BY 작업에서 지정된 양보다 많은
비압축 바이트를 처리해야 하는 경우, 동작은 sort_overflow_mode에 따라
결정되며 기본값은 throw입니다.
max_bytes_to_transfer
GLOBAL IN/JOIN 절이 실행될 때 원격 서버로 전달하거나 임시 테이블에 저장할 수 있는 최대 바이트 수(비압축 데이터)입니다.