Skip to main content
이 설정은 system.settings에서 확인할 수 있으며, 소스 코드를 기반으로 자동 생성됩니다.

enable_adaptive_aggregator

적응형 GROUP BY 알고리즘을 활성화합니다. 각 스레드는 adaptive_aggregator_freeze_threshold개의 키(또는 adaptive_aggregator_freeze_threshold_bytes만큼의 메모리)에 도달할 때까지 로컬 해시 테이블에서 집계한 후 테이블을 고정합니다. 그러면 이미 확인된(빈번한) 키의 행은 해당 테이블에서 계속 갱신되고, 새로운(드문) 키는 해시에 따라 버킷별 백로그로 전달되어 버킷 병렬 머지 내에서 정확히 한 번 집계됩니다. 빈번한 키는 캐시에 상주하는 작은 테이블에 유지되며, 드문 키는 스레드마다 한 번씩이 아니라 한 번만 저장하고 처리합니다. 외부 집계 설정(max_bytes_before_external_group_by, max_bytes_ratio_before_external_group_by)도 적용됩니다. 임계값을 초과하면 백로그를 공유 테이블로 조기에 비우며, 그래도 임계값 아래로 내려가지 않으면 일반 외부 집계를 통해 공유 테이블을 디스크에 spill합니다.

enable_adaptive_memory_spill_scheduler

프로세서가 데이터를 외부 스토리지로 적응적으로 spill하도록 트리거합니다. 현재는 spill이 가능한 해시 조인, 즉 grace_hash와 적응형 hash / parallel_hash 경로가 지원됩니다.

enable_add_distinct_to_in_subqueries

IN 서브쿼리에서 DISTINCT를 활성화합니다. 이 설정은 절충이 필요한 설정입니다. 활성화하면 고유한 값만 전송되므로, 분산 IN 서브쿼리에 대해 전송되는 임시 테이블의 크기를 크게 줄이고 세그먼트 간 데이터 전송 속도도 크게 높일 수 있습니다. 다만 이 설정을 활성화하면 중복 제거(DISTINCT)를 수행해야 하므로 각 노드에서 추가 병합 작업이 발생합니다. 네트워크 전송이 병목이고 추가 병합 비용을 감수할 수 있다면 이 설정을 사용하십시오.

enable_alp_codec

ALP 압축 코덱을 활성화합니다.

enable_automatic_decision_for_merging_across_partitions_for_final

설정된 경우, 파티션 키 표현식이 deterministic이고 파티션 키 표현식에 사용된 모든 컬럼이 프라이머리 키에 포함되면 ClickHouse가 이 최적화를 자동으로 활성화합니다. 이 자동 판별을 통해 동일한 기본 키 값을 가진 행은 항상 동일한 파티션에 속하게 되므로, 파티션 간 머지를 피해도 안전합니다. 부동소수점 키 컬럼은 이 판별에서 제외됩니다. FINAL 비교자는 Float32, Float64, BFloat16에 대해 값의 아이덴티티보다 더 거칠게 동작합니다. 즉, -0.0은 0.0과 같은 것으로 비교되고, 모든 NaN 비트 패턴은 서로 같은 것으로 비교됩니다. 반면 파티션 표현식은 바로 그러한 값들을 정확히 구분할 수 있으므로, 비교자가 하나의 키로 취급하는 행들이 서로 다른 파티션에 위치할 수 있으며, 이때 파티션 간 머지를 건너뛰면 그 행들이 모두 반환됩니다. 이 제외 규칙은 Tuple(Float64, UInt8)이나 Array(Float64)처럼 float가 키 컬럼 내부에 중첩된 경우에도 적용됩니다.

enable_cascades_optimizer

분산 쿼리 계획에 Cascades 비용 기반 최적화기를 활성화합니다. make_distributed_plan = 1과 함께 설정한 경우에만 적용됩니다. 이 설정만으로는 단일 노드 쿼리 계획이 변경되지 않습니다.

enable_early_constant_folding

함수와 서브쿼리의 결과를 분석하고, 여기에 상수가 있으면 쿼리를 재작성하는 쿼리 최적화를 활성화합니다

enable_extended_results_for_datetime_functions

확장된 범위의 Date32 타입(Date 타입 대비) 또는 확장된 범위의 DateTime64 타입(DateTime 타입 대비) 결과를 반환하도록 설정하거나 해제합니다. Possible values:
  • 0 — 함수는 모든 인수 타입에 대해 Date 또는 DateTime을 반환합니다.
  • 1 — 함수는 Date32 또는 DateTime64 인수에 대해서는 Date32 또는 DateTime64를 반환하고, 그 외의 경우에는 Date 또는 DateTime을 반환합니다.
아래 표는 다양한 날짜-시간 함수에서 이 설정이 어떻게 동작하는지 보여줍니다.

enable_full_text_index

별칭: allow_experimental_full_text_index true로 설정하면 텍스트 인덱스 사용이 허용됩니다.

enable_function_early_short_circuit

쿼리 분석 중 and 및 or에 대한 조기 단락 상수 폴딩을 활성화합니다. 활성화하면 조건을 충족하는 실행 불가 스칼라 하위 쿼리 분기는 타입을 보존하고 쿼리 의미를 검증하기 위해 분석되지만 실행되지는 않습니다. 스칼라 카디널리티 또는 런타임 값이 필요한 경우에는 일반 분석으로 되돌아갑니다.

enable_funnel_functions

별칭: allow_experimental_funnel_functions funnel 분석용 함수를 활성화합니다.

enable_global_with_statement

WITH 문을 UNION 쿼리와 모든 서브쿼리에 전파합니다

enable_group_by_top_k_optimization

GROUP BY keys ORDER BY <prefix of keys> LIMIT K 쿼리와 ORDER BY 없는 GROUP BY keys LIMIT K 쿼리에서 집계 중 TopK 필터링 최적화를 활성화합니다. 후자의 경우 임의의 K개 그룹이 유효한 결과이므로 모든 키에 대한 정렬이 내부적으로 생성됩니다. 활성화하면 집계기는 지금까지 확인한 상위 K개 키를 담는 크기 제한 힙을 유지하며, 그룹화 키가 최종 결과에 포함될 수 없는 새 행은 해시 테이블에 삽입하지 않습니다. 이렇게 하면 뒤이은 ORDER BY ... LIMIT에서 제외될 행을 집계하지 않아도 됩니다. 또한 힙이 전체 GROUP BY 키의 순위를 매길 수 있으면 중간 해시 테이블에서 축출된 그룹을 프루닝하여, 해시 테이블 크기를 고유 키 수가 아닌 LIMIT로 제한합니다. ORDER BY가 GROUP BY 키의 일부 선행 접두사만 포함하는 경우에는 순위로 전체 그룹을 식별할 수 없으므로 행 스키핑만 적용됩니다. 해시 테이블은 허용된 모든 그룹을 유지하므로 나머지 키 컬럼의 카디널리티에 따라 계속 커질 수 있습니다. 요청한 LIMIT가 query_plan_max_limit_for_top_k_optimization 또는 하드 제한인 100000보다 크면, 힙의 메모리 및 CPU 비용이 요청한 LIMIT에 따라 증가하므로 이 최적화는 비활성화됩니다. 그룹을 프루닝하면 결과가 달라질 수 있는 쿼리 형태에서는 이 최적화를 건너뜁니다. 여기에는 WITH TOTALS, HAVING, QUALIFY, 윈도우 함수, ROLLUP/CUBE/GROUPING SETS, LIMIT WITH TIES, 일치하는 GROUP BY 키의 COLLATE(GROUP BY 키 전체 접두사 이후의 ORDER BY 컬럼에 적용된 COLLATE는 어떤 그룹이 조건을 충족하는지에 영향을 주지 않으므로 최적화를 비활성화하지 않음), 집계 항목 또는 GROUP BY 키의 선행 접두사가 아닌 항목에 대한 ORDER BY, 그리고 max_rows_to_group_by 또는 exact_rows_before_limit가 설정된 경우가 포함됩니다. 가능한 값:
  • 0 — 비활성화됨.
  • 1 — 활성화됨.

enable_hash_join_row_store

해시 조인의 페이로드를 행 중심 레이아웃으로 변환할 수 있도록 합니다.

enable_hdfs_pread

HDFS 파일에 pread를 사용할지 설정합니다. 기본적으로 hdfsPread를 사용합니다. 비활성화하면 HDFS 파일을 읽을 때 hdfsRead와 hdfsSeek를 사용합니다.

enable_http_compression

HTTP 요청 응답에서 데이터 압축을 활성화하거나 비활성화합니다. 자세한 내용은 HTTP 인터페이스 설명을 참조하십시오. 가능한 값:
  • 0 — 비활성화됨.
  • 1 — 활성화됨.

enable_identifier_resolve_cache

쿼리 분석기에서 식별자 해석 캐시를 활성화합니다. 이 캐시는 해석된 별칭(alias) 노드를 공유하여 동일한 별칭이 여러 번 참조될 때 AST가 과도하게 증가하는 것을 방지합니다. 잘못된 결과가 의심되면 캐싱을 비활성화하려면 false로 설정하십시오.

enable_job_stack_trace

작업 실행 결과 예외가 발생하면 작업 생성자의 스택 트레이스를 출력합니다. 성능 오버헤드를 방지하기 위해 기본적으로 비활성화됩니다.

enable_json_ast_dialect

dialect 설정의 clickhouse_json 값을 활성화합니다. dialect를 clickhouse_json으로 설정하면 쿼리는 SQL 텍스트 대신 JSON AST (parseQueryToJSON의 출력)로 해석됩니다. 방언을 다시 전환할 수 있도록 SET 쿼리는 계속 일반 SQL로 파싱됩니다. 예시:

enable_json_lazy_type_hints

별칭: allow_experimental_json_lazy_type_hints JSON 타입에 지연 타입 힌트를 활성화합니다. 이 설정을 활성화하면 타입 힌트만 추가하거나 변경하는 ALTER TABLE ... MODIFY COLUMN json JSON(path TypeName)은 메타데이터 전용 작업이 됩니다. 즉, 과거 데이터를 다시 쓰지 않고 기존 파트에는 쿼리 시점에 타입 힌트가 적용되며, INSERT 시와 백그라운드 머지 과정에서 구체화됩니다.

enable_lazy_columns_replication

JOIN, ARRAY JOIN 및 고차 함수(예: arrayMap)의 lambda 캡처에서 컬럼 지연 복제를 활성화합니다. 이를 통해 메모리에서 동일한 행을 여러 번 불필요하게 복사하지 않아도 됩니다.

enable_materialized_cte

구체화된 공통 테이블 표현식(WITH <name> AS MATERIALIZED (<subquery>))을 활성화합니다. 활성화하면 MATERIALIZED로 선언된 CTE가 두 번 이상 참조될 경우 한 번만 실행되어 임시 테이블에 저장되고, 모든 참조는 해당 테이블에서 읽습니다. 한 번만 참조되는 CTE는 오버헤드를 피하기 위해 일반 CTE처럼 인라인 처리됩니다. 비활성화하면 MATERIALIZED 키워드는 무시됩니다. 즉, CTE는 일반 CTE와 같이 각 참조 지점에 인라인 처리되며 경고가 로그에 기록됩니다.

enable_materialized_postgresql_table

별칭: allow_experimental_materialized_postgresql_table MaterializedPostgreSQL 테이블 엔진 사용을 허용합니다.

enable_memory_bound_merging_of_aggregation_results

집계에 메모리 제한 기반 병합 전략을 사용합니다.

enable_multiple_prewhere_read_steps

WHERE의 더 많은 조건을 PREWHERE로 이동하고, AND로 결합된 여러 조건이 있으면 디스크 읽기와 필터링을 여러 단계에 걸쳐 수행합니다

enable_named_columns_in_function_tuple

모든 이름이 고유하고 따옴표 없이 식별자로 취급할 수 있는 경우 tuple() 함수에서 이름이 지정된 Tuple을 생성합니다.

enable_nullable_tuple_type

별칭: allow_experimental_nullable_tuple_type 테이블에서 Nullable Tuple 컬럼을 생성할 수 있습니다. 이 설정은 Dynamic, Variant, JSON 또는 Tuple 컬럼 등에서 추출한 튜플 서브컬럼을 Nullable로 만들 수 있는지 여부는 제어하지 않습니다. 추출한 튜플 서브컬럼을 Nullable로 만들 수 있는지 제어하려면 allow_nullable_tuple_in_extracted_subcolumns을 사용하십시오.

enable_order_by_all

ORDER BY ALL 구문을 사용한 정렬 기능을 활성화하거나 비활성화합니다. 자세한 내용은 ORDER BY를 참조하십시오. 가능한 값:
  • 0 — ORDER BY ALL을 비활성화합니다.
  • 1 — ORDER BY ALL을 활성화합니다.
예시 쿼리:
결과:

enable_packed_string_keys_in_aggregation

널을 허용하지 않는 단일 String 키를 사용하는 GROUP BY에 16바이트 패킹 문자열 참조(PackedStringRef)를 키로 하는 해시 테이블을 사용합니다. 최대 11바이트의 키는 패킹된 참조에 인라인으로 저장되며, 더 긴 키는 arena에 대한 참조로 저장됩니다. 대부분의 워크로드에서 더 빠르지만, 11바이트보다 긴 고유 키가 매우 적은 GROUP BY에서는 레거시 메서드보다 느릴 수 있습니다. 특히 키 길이가 12..24바이트일 때 두드러집니다. 레거시 해시 테이블은 키를 셀에 인라인으로 유지하는 반면, 패킹된 해시 테이블은 매 탐색마다 arena 포인터를 역참조하기 때문입니다. 비활성화하면 레거시 StringHashTable 기반 메서드(26.8 이전의 기본값)를 사용합니다. 분산 쿼리에 참여하는 모든 서버는 이 값이 일치해야 합니다. distributed_aggregation_memory_efficient를 사용하면 2단계 버킷 번호는 키 해시에 따라 달라지며, 이 해시는 두 메서드에서 서로 다릅니다. 따라서 이 설정이 서로 다른 서버는 동일한 키를 서로 다른 버킷으로 분할해 잘못 머지된 결과를 생성할 수 있습니다. 값의 일치를 보장하기 위해 시작 노드는 서버 또는 프로필 기본값에서만 가져온 경우에도 보조 쿼리와 함께 유효 값을 항상 전송하여 원격 서버의 기본값을 재정의합니다.

enable_parsing_to_custom_serialization

true인 경우, 테이블에서 가져온 직렬화 힌트에 따라 데이터를 사용자 지정 직렬화(예: Sparse)가 적용된 컬럼으로 직접 파싱할 수 있습니다.

enable_producing_buckets_out_of_order_in_aggregation

메모리 효율적인 집계(distributed_aggregation_memory_efficient 참고)에서 버킷이 순서와 다르게 생성되도록 허용합니다. 이 설정은 집계 버킷 크기가 치우쳐 있을 때, 레플리카가 id가 낮은 무거운 버킷 일부를 아직 처리하는 동안 id가 더 높은 버킷을 initiator로 전송할 수 있게 하여 성능을 향상시킬 수 있습니다. 단점은 메모리 사용량이 더 늘어날 수 있다는 점입니다.

enable_quantized_codec

Quantized 압축 코덱을 활성화합니다.

enable_reads_from_query_cache

활성화되면 SELECT 쿼리의 결과를 쿼리 캐시에서 가져옵니다. 가능한 값:
  • 0 - 비활성화
  • 1 - 활성화

enable_s3_requests_logging

S3 request에 대한 매우 상세한 로깅을 활성화합니다. Debug 용도로만 사용하는 것이 좋습니다.

enable_scalar_subquery_optimization

true로 설정하면 스칼라 서브쿼리에서 큰 스칼라 값의 직렬화/역직렬화를 방지하고, 가능하면 동일한 서브쿼리를 두 번 이상 실행하지 않도록 합니다.

enable_scopes_for_with_statement

비활성화하면 상위 WITH 절의 선언은 현재 스코프에 선언된 것과 같은 스코프에서 동작합니다. 이는 이전 분석기가 실행할 수 있었던 일부 유효하지 않은 쿼리를 실행할 수 있도록 하기 위한 분석기의 compatibility 설정이라는 점에 유의하십시오.

enable_shared_storage_snapshot_in_query

활성화하면 단일 쿼리 내의 모든 서브쿼리가 각 테이블에 대해 동일한 StorageSnapshot을 공유합니다. 따라서 동일한 테이블에 여러 번 접근하더라도 쿼리 전체에서 일관된 데이터 뷰가 보장됩니다. 이는 데이터 파트(data part)의 내부 일관성이 중요한 쿼리에서 필요합니다. 예시:
이 설정이 없으면 외부 쿼리와 내부 쿼리가 서로 다른 데이터 스냅샷을 기준으로 처리될 수 있어, 잘못된 결과가 나올 수 있습니다. 가능한 값:
  • 0 - 비활성화됨
  • 1 - 활성화됨

enable_sharing_sets_for_mutations

IN 서브쿼리용으로 생성된 Set 객체를 동일한 뮤테이션의 여러 작업 간에 공유할 수 있도록 합니다. 이렇게 하면 메모리 사용량과 CPU 사용량을 줄일 수 있습니다.

enable_streaming_queries

SELECT ... FROM t STREAM [CURSOR '{...}'] 지속 쿼리를 허용합니다. 비활성화되면 STREAM 수정자를 사용하는 모든 테이블 표현식이 계획 생성 시점에 거부됩니다. 이는 streaming-queries 기능을 위한 상위 제어 설정이며, 추가 기능은 각자의 설정으로 별도로 제어될 수 있습니다.

enable_sz3_codec

SZ3 압축 코덱을 활성화합니다.

enable_time_series_aggregate_functions

Aliases: allow_experimental_ts_to_grid_aggregate_function, allow_experimental_time_series_aggregate_functions Prometheus 스타일의 time series 리샘플링, rate 및 delta 계산에 사용하는 timeSeries* 집계 함수를 활성화합니다.

enable_time_series_table

Aliases: allow_experimental_time_series_table TimeSeries 테이블 엔진을 사용하는 테이블 생성을 허용합니다. 가능한 값:
  • 0 — TimeSeries 테이블 엔진이 비활성화됩니다.
  • 1 — TimeSeries 테이블 엔진이 활성화됩니다.

enable_time_time64_type

별칭: allow_experimental_time_time64_type Time 및 Time64 데이터 타입을 생성할 수 있습니다.

enable_trino_dialect

dialect 설정의 trino 값을 활성화합니다. dialect를 trino로 설정하면 쿼리를 Trino SQL로 작성할 수 있습니다. Trino 전용 구문(ARRAY[...] 리터럴, TRY_CAST, UNNEST, ROW 타입, LIMIT 앞의 OFFSET)은 ClickHouse SQL로 변환되고, Trino 함수 이름은 ClickHouse의 동등한 함수로 매핑됩니다. 방언을 다시 전환할 수 있도록 SET 쿼리는 일반 SQL로 계속 구문 분석됩니다. 이 방언은 쿼리 의미도 Trino에 맞춥니다. 즉, join_use_nulls는 켜지고, use_variant_as_common_type은 꺼지며, 쿼리 분석기는 켜집니다. 쿼리에 명시적으로 지정한 SETTINGS 절은 계속 우선 적용됩니다.

enable_unaligned_array_join

크기가 서로 다른 여러 배열에 대해 ARRAY JOIN을 허용합니다. 이 설정을 활성화하면 배열 크기가 가장 긴 배열에 맞춰 조정됩니다.

enable_unique_key

별칭: allow_experimental_unique_key MergeTree 계열 엔진에서 UNIQUE KEY 절을 사용해 테이블을 생성할 수 있도록 허용합니다.

enable_url_encoding

URL 엔진 테이블에서 URI 경로의 디코딩/인코딩을 활성화하거나 비활성화할 수 있습니다. 기본적으로 비활성화되어 있습니다.

enable_vertical_final

활성화하면 FINAL 중에 행을 병합하는 대신 행을 삭제된 것으로 표시한 뒤 나중에 필터링하여 중복 행을 제거합니다

enable_writes_to_query_cache

이 설정을 활성화하면 SELECT 쿼리의 결과가 쿼리 캐시에 저장됩니다. Possible values:
  • 0 - 비활성화됨
  • 1 - 활성화됨

enable_zxc_codec

ZXC 압축 코덱을 활성화합니다.
마지막 수정일 2026년 9월 26일