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
enable_add_distinct_to_in_subqueries
IN 서브쿼리에서 DISTINCT를 활성화합니다. 이 설정은 절충이 필요한 설정입니다. 활성화하면 고유한 값만 전송되므로, 분산 IN 서브쿼리에 대해 전송되는 임시 테이블의 크기를 크게 줄이고 세그먼트 간 데이터 전송 속도도 크게 높일 수 있습니다.
다만 이 설정을 활성화하면 중복 제거(DISTINCT)를 수행해야 하므로 각 노드에서 추가 병합 작업이 발생합니다. 네트워크 전송이 병목이고 추가 병합 비용을 감수할 수 있다면 이 설정을 사용하십시오.
enable_alp_codec
ALP 압축 코덱을 사용할 수 있도록 합니다.
enable_automatic_decision_for_merging_across_partitions_for_final
enable_cascades_optimizer
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_global_with_statement
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
pread를 사용할지 설정합니다. 기본적으로 hdfsPread를 사용합니다. 비활성화하면 HDFS 파일을 읽을 때 hdfsRead와 hdfsSeek를 사용합니다.
enable_http_compression
- 0 — 비활성화됨.
- 1 — 활성화됨.
enable_identifier_resolve_cache
false로 설정하십시오.
enable_job_stack_trace
enable_json_ast_dialect
dialect 설정의 clickhouse_json 값을 활성화합니다.
dialect를 clickhouse_json으로 설정하면 쿼리는 SQL 텍스트 대신 JSON AST
(parseQueryToJSON의 출력)로 해석됩니다. 방언을 다시 전환할 수 있도록 SET 쿼리는
계속 일반 SQL로 파싱됩니다.
예시:
enable_lazy_columns_replication
JOIN, ARRAY JOIN 및 고차 함수(예: arrayMap)의 lambda 캡처에서 컬럼 지연 복제를 활성화합니다. 이를 통해 메모리에서 동일한 행을 여러 번 불필요하게 복사하지 않아도 됩니다.
enable_materialized_cte
enable_memory_bound_merging_of_aggregation_results
enable_multiple_prewhere_read_steps
enable_named_columns_in_function_tuple
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
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
enable_scalar_subquery_optimization
enable_scopes_for_with_statement
enable_sharding_aggregator
GROUP BY 최적화를 활성화합니다. 이를 통해 각 스레드는 머지 단계 없이 서로 겹치지 않는 키 부분 집합을 집계합니다.
이 방식은 데이터가 고르게 분포된 카디널리티가 높은 키에서 효율적이지만, 키 분포가 심하게 치우쳐 있거나 서로 다른 키가 매우 적은 쿼리에서는 성능이 떨어질 수 있습니다.
가능한 값:
- 0 — 세그먼트 분할 집계 최적화가 비활성화됩니다.
- 1 — 세그먼트 분할 집계 최적화가 활성화됩니다.
- 0 - 비활성화됨
- 1 - 활성화됨
enable_sharing_sets_for_mutations
enable_streaming_queries
SELECT ... FROM t STREAM [CURSOR '{...}'] 지속 쿼리를 허용합니다.
비활성화되면 STREAM 수정자를 사용하는 모든 테이블 표현식이
계획 생성 시점에 거부됩니다. 이는 streaming-queries
기능을 위한 상위 제어 설정이며, 추가 기능은 각자의 설정으로
별도로 제어될 수 있습니다.
enable_sz3_codec
SZ3 압축 코덱을 사용할 수 있습니다.
enable_time_time64_type
allow_experimental_time_time64_type
Time 및 Time64 데이터 타입을 생성할 수 있습니다.
enable_unaligned_array_join
enable_url_encoding
enable_vertical_final
enable_writes_to_query_cache
SELECT 쿼리의 결과가 쿼리 캐시에 저장됩니다.
Possible values:
- 0 - 비활성화됨
- 1 - 활성화됨
enable_zxc_codec
ZXC 압축 코덱을 사용할 수 있도록 합니다.