adaptive_aggregator_freeze_threshold
enable_adaptive_aggregator 참조). 값이 작을수록 고정된 테이블이 캐시에 상주하고, 값이 클수록 자주 사용되는 키를 더 많이 수용할 수 있습니다. 0으로 설정하면 가능한 첫 시점에 테이블을 고정하므로 알고리즘이 세그먼트 분할 집계기(enable_sharding_aggregator)와 유사하게 동작합니다. 즉, 모든 키는 해시에 따라 라우팅되어 단일 소유자가 집계하지만, 스캔 중 스레드 간에 교환하는 대신 머지 단계로 처리를 미룹니다.
add_http_cors_header
analyze_index_with_space_filling_curves
ORDER BY mortonEncode(x, y) 또는 ORDER BY hilbertEncode(x, y)), 쿼리에 해당 인수에 대한 조건이 있는 경우(예: x >= 10 AND x <= 20 AND y >= 20 AND y <= 30), 인덱스 분석에 공간 충전 곡선을 사용합니다.
analyzer_inline_views
any_join_distinct_right_table_keys
ANY INNER|LEFT JOIN 작업에서 기존 ClickHouse 서버 동작을 활성화합니다.
사용 사례가 기존
JOIN 동작에 의존하는 경우에만 이전 버전과의 호환성을 위해 이 설정을 사용하십시오.- ClickHouse가 왼쪽 테이블에서 오른쪽 테이블로의 다대일 키 매핑 로직을 사용하므로
t1 ANY LEFT JOIN t2와t2 ANY RIGHT JOIN t1작업의 결과는 서로 같지 않습니다. ANY INNER JOIN작업의 결과에는SEMI LEFT JOIN작업과 같이 왼쪽 테이블의 모든 행이 포함됩니다.
- ClickHouse가
ANY RIGHT JOIN작업에서 일대다 키 매핑을 제공하는 로직을 사용하므로t1 ANY LEFT JOIN t2와t2 ANY RIGHT JOIN t1작업의 결과는 동일합니다. ANY INNER JOIN작업의 결과에는 왼쪽 테이블과 오른쪽 테이블의 각 키마다 하나의 행이 포함됩니다.
- 0 — 기존 방식이 비활성화됩니다.
- 1 — 기존 방식이 활성화됩니다.
archive_adaptive_buffer_max_size_bytes
arrow_flight_request_descriptor_type
- ‘path’ — FlightDescriptor::Path를 사용합니다(기본값, 대부분의 Arrow Flight 서버에서 작동)
- ‘command’ — SELECT 쿼리와 함께 FlightDescriptor::Command를 사용합니다(Dremio에 필요)
backup_slow_all_threads_after_retryable_s3_error
true로 설정하면 ‘Slow Down’과 같은 재시도 가능한 S3 오류가 단일 S3 요청에서 한 번이라도 발생한 후, 동일한 백업 엔드포인트에 S3 요청을 실행하는 모든 스레드의 속도가 느려집니다.
false로 설정하면 각 스레드는 다른 스레드와 독립적으로 S3 요청의 백오프를 처리합니다.
cache_warmer_threads
calculate_text_stack_trace
cancel_http_readonly_queries_on_client_close
1.
checksum_on_read
압축
compression=gz. 이는 Content-Encoding(HTTP 압축) 및 레거시 compress 매개변수(ClickHouse 네이티브 압축)와는 별개입니다. URL 경로에 압축 파일 확장자를 지정해도 동일한 효과를 얻을 수 있습니다.
이는 HTTP 인터페이스에서 응답 형식을 제어하는 설정입니다. 쿼리 실행 전에 처리되어(응답 버퍼가 미리 설정됨) HTTP URL 매개변수, URL 경로의 파일 확장자 또는 사용자 프로필을 통해 지정해야 합니다. 쿼리 내 SETTINGS 절로 지정하면 효과가 없으며 거부됩니다.
connection_pool_max_wait_ms
- 양의 정수
- 0 — 무한 timeout
connections_with_failover_max_tries
convert_query_to_cnf
true로 설정하면 SELECT 쿼리가 연언 정규형(CNF)으로 변환됩니다. 쿼리를 CNF로 재작성하면 더 빠르게 실행되는 경우가 있습니다(자세한 설명은 이 GitHub 이슈를 참조하십시오).
예를 들어, 다음 SELECT 쿼리는 수정되지 않습니다(기본 동작):
convert_query_to_cnf를 true로 설정하고 어떻게 달라지는지 살펴보겠습니다:
WHERE 절이 CNF로 재작성되었지만 결과 집합은 동일하고 Boolean 논리는 변경되지 않았습니다:
count_matches_stop_at_empty_match
countMatches 함수에서 패턴이 길이가 0인 문자열과 일치하면 카운트를 중지합니다.
cross_to_inner_join_rewrite
data_type_default_nullable
- 1 — 컬럼 정의의 데이터 타입은 기본적으로
Nullable로 설정됩니다. - 0 — 컬럼 정의의 데이터 타입은 기본적으로
Nullable이 아닌 것으로 설정됩니다.
decimal_check_overflow
deduplicate_blocks_in_dependent_materialized_views
- 0 — 비활성화됨.
- 1 — 활성화됨.
defer_partition_pruning_after_final
FINAL 쿼리에서는 파티션 프루닝을 건너뜁니다. 이는 26.3에서 도입된 정확성 보장 동작입니다. FINAL은 프라이머리 키는 같지만 서로 다른 파티션에 있는 행의 중복을 제거해야 할 수 있는데, 파티션 프루닝을 적용하면 이러한 행이 중복 제거 입력에서 조용히 제외될 수 있습니다.
비활성화되면 FINAL을 사용하더라도 파티션 프루닝이 적용되어 26.3 이전 동작으로 돌아갑니다. 이는 파티션 컬럼에 대한 WHERE 프레디케이트가 있는 쿼리에서 훨씬 더 빠를 수 있지만, 동일한 프라이머리 키를 가진 행이 서로 다른 파티션에 존재할 수 없는 경우에만 올바릅니다. 예를 들어 이벤트 로그 테이블처럼 파티션 컬럼이 삽입 시점에 설정되고 이후에는 변경되지 않는 경우입니다.
이 설정은 파티션 키 컬럼이 sorting key에 포함되지 않은 파티션 테이블에만 영향을 줍니다. 그 외의 테이블에는 파티션 프루닝이 항상 적용됩니다.
가능한 값:
- 0 —
FINAL전에 파티션 프루닝 적용(26.3 이전 동작, 더 빠르지만 일반적으로는 안전하지 않음). - 1 —
FINAL이후로 파티션 프루닝 지연(기본값, 정확성 보장).
describe_compact_output
방언
clickhouse(기본값) — 표준 ClickHouse SQL입니다.kusto— Kusto Query Language입니다. 실험적 설정allow_experimental_kusto_dialect이 필요합니다.prql— PRQL입니다. 실험적 설정allow_experimental_prql_dialect이 필요합니다.polyglot— 다른 방언(MySQL, PostgreSQL 등)의 SQL을 ClickHouse SQL로 트랜스파일합니다. 실험적 설정allow_experimental_polyglot_dialect이 필요합니다.promql—promql_database,promql_table,promql_evaluation_time설정으로 구성된 TimeSeries 테이블에서 평가되는 PromQL(Prometheus Query Language)입니다.clickhouse_json— SQL 텍스트 대신 쿼리를 JSON AST(parseQueryToJSON의 출력)로 해석합니다. 방언을 다시 전환할 수 있도록 일반 형식의SET쿼리도 계속 인식됩니다. 실험적 설정enable_json_ast_dialect이 필요합니다.
discard_query_data
distinct_overflow_mode
throw: 예외를 발생시킵니다(기본값).break: 쿼리 실행을 중단하고 부분 결과를 반환합니다. 마치 입력 데이터가 소진된 것처럼 동작합니다.
do_not_merge_across_partitions_select_final
dynamic_throw_on_type_mismatch
true(기본값) — 예외를 발생시킵니다.false— 해당 행에NULL을 반환합니다.
enforce_strict_identifier_format
engine_url_skip_empty_files
- 0 — 빈 파일이 요청된 포맷과 호환되지 않으면
SELECT에서 예외가 발생합니다. - 1 — 빈 파일이면
SELECT가 빈 결과를 반환합니다.
exact_rows_before_limit
rows_before_limit_at_least 통계에 정확한 값을 제공하지만, 그 대신 limit 이전의 데이터를 끝까지 모두 읽어야 합니다
except_default_mode
exclude_materialize_skip_indexes_on_insert
execute_exists_as_scalar_subquery
0.
explain_query_plan_default
EXPLAIN PLAN에 사용되는 기본 포맷입니다.
가능한 값:
pretty(26.7부터 기본값) —actions,compact,pretty의 기본값이true로 설정되어, 간결하고 가독성이 높으며actions정보가 포함된 계획을 생성합니다.legacy— 26.7 이전 출력입니다.
EXPLAIN 문에서 actions, compact, pretty 옵션을 명시적으로 지정하면(예: EXPLAIN actions = 0, compact = 0, pretty = 0 SELECT ...) 항상 이 설정이 재정의됩니다.
json = 1 또는 distributed = 1을 사용하는 EXPLAIN PLAN은 이 설정과 관계없이 26.7 이전 기본값(legacy)을 유지합니다. 단, actions, compact, pretty를 명시적으로 설정한 경우는 예외입니다. pretty 출력은 JSON 결과나 세그먼트별 분산 계획을 표현할 수 없으므로, 이러한 모드는 legacy 형식으로만 올바르게 렌더링됩니다.
extract_key_value_pairs_max_pairs_per_row
extract_kvp_max_pairs_per_row
extractKeyValuePairs 함수가 생성할 수 있는 최대 쌍 수입니다. 과도한 메모리 사용을 방지하기 위한 보호 장치로 사용됩니다.
extremes
fallback_to_stale_replicas_for_distributed_queries
SELECT를 수행할 때 사용됩니다.
기본값은 1(활성화)입니다.
file_like_engine_default_partition_strategy
{_partition_id} 자리 표시자가 없을 때만 적용됩니다. 이러한 경로는 wildcard 전략과만 호환되므로 항상 wildcard를 의미합니다.
filesystem_prefetches_limit
filesystem_prefetches_max_memory_usage를 사용하는 것이 더 권장됩니다.
filter
WHERE 절을 추가합니다. 여러 필터는 AND로 결합됩니다. HTTP 인터페이스에서는 여러 filter URL 매개변수를 사용할 수 있으며, 이 매개변수들은 순서대로 AND로 결합되고 이 설정값과도 AND로 결합됩니다.
이는 엔진이 파싱된 쿼리에 적용하는 쿼리 구성 설정으로, 쿼리를 파생 테이블로 감쌉니다. 따라서 기존 쿼리와 함께 사용할 수 있고 모든 프로토콜에서 작동합니다. HTTP URL 매개변수, 쿼리 내 SETTINGS 절 또는 사용자 프로필을 통해 지정할 수 있습니다.
결과를 반환하는 SELECT / UNION 쿼리의 형태를 결정합니다. 쓰기 쿼리(INSERT … SELECT, CREATE … AS SELECT)에서는 소스 SELECT의 자체 SETTINGS 절에 이 설정이 지정된 경우에만 적용됩니다. 프로필이나 세션에서 상속된 값 또는 INSERT / CREATE 문 자체에 설정된 값은 소스 SELECT로 전파되지 않습니다. 이는 다른 모든 설정에도 적용되는 동일한 비전파 규칙입니다.
filter는 접근 제어 메커니즘이 아니므로, 행 수준 보안 정책이나 additional_table_filters 설정을 대체하는 용도로 사용해서는 안 됩니다. 이 설정은 감싸는 하위 쿼리에 WHERE 절만 추가하므로, 필터가 적용되기 전에 기본 데이터는 여전히 읽히고 처리됩니다. 쿼리는 처리 과정에서 필터링된 행을 확인할 수 있습니다(예: throwIf를 사용해 오류 경로를 통해 정보를 유출할 수 있음). 사용자가 접근할 수 있는 행을 제한하려면 행 수준 보안 또는 additional_table_filters를 사용하십시오.final
- 0 - 비활성화
- 1 - 활성화
finalize_projection_parts_synchronously
flatten_nested
- 1 — nested 컬럼이 각각의 배열로 평탄화됩니다.
- 0 — nested 컬럼이 튜플의 단일 배열로 유지됩니다.
0으로 지정하면 임의의 수준으로 중첩할 수 있습니다.
예시
쿼리:
format
FORMAT을 재정의합니다. 쿼리 또는 파일 확장자에 지정된 포맷보다 우선 적용됩니다. 더 구체적인 input_format 및 output_format 설정은 각각의 방향에서 이 일반적인 format 설정보다 우선합니다.
framing_output_format
data, totals, extremes 패킷의 페이로드를 연결한 결과는 프레이밍 없이 해당 출력 형식이 생성하는 결과와 정확히 같습니다. 보조 패킷(진행 상황, 로그, 프로필 이벤트, 예외)은 JSON으로 표현됩니다.
의도적인 예외가 하나 있습니다. 일반 출력에서 합계와 극값을 표현할 수 없어 이를 생략하는 출력 형식(JSONCompactEachRow 계열)은 프레이밍을 사용할 때 totals 및 extremes 패킷에 이를 출력합니다. 이러한 포맷에서는 data 패킷만 연결한 결과가 프레이밍되지 않은 출력과 정확히 같으며, totals 및 extremes 패킷에는 프레이밍되지 않은 출력에 포함되지 않는 추가 행이 담깁니다.
send_logs_level 설정이 지정되면 서버 로그가 포함되고, send_profile_events 설정이 활성화되면 프로필 이벤트가 포함됩니다(프로필 이벤트는 interactive_delay 마이크로초마다 최대 한 번 전송되며, 진행 상황 패킷도 interactive_delay에 따라 제한됩니다).
성공한 스트림은 네이티브 프로토콜의 최종 진행 상황 패킷과 마찬가지로 쿼리 완료 로깅에서 생성된 마지막 log 및 profile_events 패킷 뒤에 기록되는, 최종 카운터(result_rows, result_bytes, memory_usage)를 담은 최종 progress 패킷으로 끝납니다. 실패 시에는 exception 패킷이 마지막 패킷이 됩니다. 단, 패킷 스트림의 일부가 이미 응답에 기록되어 더 이상 폐기할 수 없는 상태에서 실패하는 경우는 예외입니다(패킷 쓰기가 중간에 실패하거나, exception 패킷 자체의 전송이 실패하거나, 응답 스트림을 플러시하거나 닫는 중에 실패하는 경우). 이 경우 프레이밍은 안전하게 실패합니다. 즉, 스트림은 종료 exception 패킷 없이 종료되며, 클라이언트는 파싱 가능한 종료 패킷 대신 잘린 응답과 중단된 HTTP 연결을 확인합니다. 부분 패킷 스트림 뒤에 어떤 내용도 추가되지 않으므로 일반 HTTP 오류 본문이 스트림에 섞이는 일은 없습니다.
쿼리 자체의 SETTINGS 절을 통해서만 활성화되는 항목(프레이밍 포맷, send_logs_level, send_profile_events)은 쿼리가 파싱되기 전까지 알 수 없습니다. 따라서 해당 로그와 프로필 이벤트는 쿼리 실행 이후부터만 캡처됩니다. 파싱, 계획, 분석 단계의 로그와 프로필 이벤트는 설정이 세션이나 URL에서 제공될 때만 캡처됩니다. 예를 들어 분석 중에 실패하는 쿼리(알 수 없는 테이블 참조 등)가 SETTINGS 절에서만 send_logs_level을 활성화하면 분석 단계 로그가 아닌 exception 패킷만 전송됩니다. 해당 로그를 캡처하려면 세션 또는 URL에서 send_logs_level을 설정하십시오.
이와 같은 늦은 설정 감지에 관한 주의 사항은 send_logs_source_regexp에도 적용됩니다. 로그 큐는 각 항목을 캡처하는 시점에 소스를 기준으로 필터링하므로, 쿼리 자체의 SETTINGS 절에서만 설정한 정규 표현식은 쿼리 실행 이후부터 적용됩니다. 파싱, 계획 및 분석 단계의 log 패킷은 세션 또는 URL에 설정된 값으로 필터링됩니다(해당 위치에 설정되지 않은 경우 필터링되지 않음). 따라서 쿼리 수준 정규 표현식과 일치하지 않는 소스가 포함될 수 있습니다. 반대로 더 제한적인 세션 또는 URL 정규 표현식으로 제외된 항목은 더 포괄적인 쿼리 수준 정규 표현식으로 복구되지 않습니다. 전체 쿼리 수명 주기를 필터링하려면 세션 또는 URL에서 send_logs_source_regexp를 설정하십시오.
이 설정은 현재 HTTP 프로토콜에 적용되며 다른 인터페이스에서는 무시됩니다.
가능한 값:
None- 적용 가능한 모든 항목(데이터, 합계, 극값, 진행)은 출력 형식으로 그대로 전달하고, 적용되지 않는 항목(메트릭, 로그)은 무시하므로 기본 동작이 그대로 유지됩니다.EventStream- 패킷을 HTTP 서버 전송 이벤트(text/event-stream)로 프레이밍합니다. 각 패킷은data,totals,extremes,progress,log,profile_events,exception중 해당 이름의 이벤트로 전송됩니다. 진행 및 기타 보조 패킷은 JSON으로 전송됩니다. 서버 전송 이벤트는 줄 바꿈(캐리지 리턴\r포함)을 구분 기호로 처리하는 텍스트 프로토콜이므로, 포맷된 데이터 블록은 이벤트의 단일data필드에 base64 인코딩됩니다. 이를 디코딩하면 모든 줄 바꿈을 포함한 완전히 포맷된 페이로드를 얻을 수 있습니다. 이를 나타내기 위해Content-Type에는payload=base64매개변수가 포함됩니다. 이 방식으로 텍스트와 바이너리를 포함한 모든 출력 형식을 바이트 단위까지 정확하게 전송할 수 있습니다.JSONEachPacketBase64- 각 패킷은 별도의 줄에 있는 JSON 객체이며, 포맷된 데이터는 base64 인코딩됩니다. 예:{"packet":"data","data":"eyJ4IjoxfQo="}. 바이너리 출력 형식에 적합합니다.JSONEachPacketString- 각 패킷은 별도의 줄에 있는 JSON 객체이며, 포맷된 데이터는 문자열에 저장됩니다. 예:{"packet":"data","data":"{\"x\":1}\n"}.
JSONEachPacketString은 페이로드 바이트의 유효성을 검사하거나 재인코딩하지 않고 JSON 문자열에 넣습니다. String 및 FixedString 컬럼은 임의의 바이트를 저장할 수 있으므로, 텍스트 출력 형식(JSONEachRow, TSV, CSV 등)은 이러한 값에 대해 유효하지 않은 UTF-8을 출력할 수 있습니다. 이는 기본값인 output_format_json_validate_utf8 = 0에서 ClickHouse 자체 JSONEachRow의 동작과 같습니다. 따라서 결과 NDJSON 스트림이 유효한 UTF-8임을 보장할 수 없습니다. 임의의 바이트를 바이트 단위까지 정확하게 전송하려면 JSONEachPacketBase64를 사용하십시오.
예시:
fsync_metadata
.sql 파일을 쓸 때 fsync 사용 여부를 설정합니다. 기본적으로 활성화되어 있습니다.
server에 지속적으로 생성되었다가 삭제되는 아주 작은 table이 수백만 개 있다면 비활성화하는 것이 적절할 수 있습니다.
functions_h3_default_if_invalid
geo_distance_returns_float64_on_float64_arguments
geoDistance, greatCircleDistance, greatCircleAngle 함수의 4개 인수가 모두 Float64이면 Float64를 반환하며, 내부 계산에는 배정밀도를 사용합니다. 이전 ClickHouse 버전에서는 이 함수들이 항상 Float32를 반환했습니다.
geotoh3_argument_order
glob_expansion_max_elements
h3togeo_lon_lat_result_order
h3ToGeo는 true일 때 (lon, lat)를 반환하고, 그렇지 않으면 (lat, lon)을 반환합니다.
handshake_timeout_ms
hedged_connection_timeout_ms
highlight_max_matches_per_row
- 양의 정수.
hnsw_candidate_list_size_for_search
hsts_max_age
idle_connection_timeout
- 양의 정수(0 - 0초 후 즉시 종료).
inject_random_order_for_select_without_order_by
input_format
interactive_delay
intersect_default_mode
least_greatest_legacy_null_behavior
legacy_column_name_of_tuple_literal
limit
LIMIT에 그대로 전달되며, 음수 값(결과의 끝에서부터 계산)과 (0, 1) 범위의 소수(결과의 비율로 해석)를 포함해 LIMIT에서 허용하는 모든 값을 사용할 수 있습니다.
가능한 값:
- 0 — 행 수를 제한하지 않습니다.
- 양의 정수 — 정확한 행 수입니다.
- 음의 정수 — 마지막 N개의 행을 반환합니다.
- 열린 구간
(0, 1)의 실수 — 결과의 해당 비율을 반환합니다.
SELECT / UNION 쿼리에 적용됩니다. 쓰기 쿼리(INSERT … SELECT, CREATE … AS SELECT)에서는 원본 SELECT의 자체 SETTINGS 절에 이 설정이 지정된 경우에만 적용됩니다. 프로필이나 세션에서 상속되거나 INSERT / CREATE SQL 문 자체에 설정된 값은 원본 SELECT로 전파되지 않습니다. 이는 다른 모든 설정에도 적용되는 동일한 비전파 규칙입니다.
load_marks_asynchronously
1.
lock_acquire_timeout
DEADLOCK_AVOIDED와 함께 “Locking attempt timed out! Possible deadlock avoided. Client should retry.” 예외를 발생시킵니다.
가능한 값:
- 양의 정수(초 단위)
- 0 — 잠금 타임아웃 없음
low_priority_query_wait_time_ms
priority 참조), 낮은 우선순위의 쿼리는 더 높은 우선순위의 쿼리가 완료될 때까지 대기합니다. 이 설정은 그 대기 시간을 지정합니다.
make_distributed_plan
enable_parallel_replicas = 0및automatic_parallel_replicas_mode = 0— 분산 계획이 작업을 자체적으로 분배합니다.correlated_subqueries_use_in_memory_buffer = 0;use_skip_indexes_on_data_read = 0;compile_expressions = 0;query_plan_direct_read_from_text_index = 0.
merge_table_max_tables_to_look_for_schema_inference
Merge 테이블을 생성하거나 merge 테이블 함수를 사용하는 경우, 지정된 개수를 넘지 않는 범위의 일치하는 테이블들을 합집합으로 하여 스키마를 추론합니다.
테이블 수가 이보다 많으면 처음 지정된 개수의 테이블을 기준으로 스키마를 추론합니다.
mongodb_throw_on_unsupported_query
multiple_joins_try_to_keep_original_names
normalize_function_names
offset
OFFSET에 그대로 전달되며, 음수 값과 (0, 1) 범위의 소수를 포함해 OFFSET에서 허용하는 모든 값을 사용할 수 있습니다.
가능한 값:
- 0 — 행을 건너뛰지 않습니다.
- 양의 정수.
- 음의 정수.
- 열린 구간
(0, 1)의 실수 — 결과 중 해당 비율만큼 건너뜁니다.
SELECT / UNION 쿼리에 영향을 줍니다. 쓰기 쿼리(INSERT … SELECT, CREATE … AS SELECT)에서는 소스 SELECT 자체의 SETTINGS 절에 이 설정이 지정된 경우에만 적용됩니다. 프로필이나 세션에서 상속받은 값 또는 INSERT / CREATE 문 자체에 설정한 값은 소스 SELECT로 전파되지 않습니다. 이는 다른 모든 설정에도 적용되는 동일한 비전파 규칙입니다.
order
ORDER BY 절을 추가합니다. 임의의 표현식 목록을 허용합니다.
이는 엔진이 파싱된 쿼리에 적용하는 쿼리 구성 설정으로, 쿼리를 파생 테이블로 감쌉니다. 따라서 기존 쿼리와 함께 사용할 수 있으며 모든 프로토콜에서 작동합니다. HTTP URL 매개변수, 쿼리 내 SETTINGS 절 또는 사용자 프로필을 통해 지정할 수 있습니다.
결과를 생성하는 SELECT / UNION 쿼리의 형태를 지정합니다. 쓰기 쿼리(INSERT … SELECT, CREATE … AS SELECT)에서는 소스 SELECT의 자체 SETTINGS 절에 이 설정이 포함된 경우에만 적용됩니다. 프로필 또는 세션에서 상속된 값이나 INSERT / CREATE 문 자체에 설정된 값은 소스 SELECT로 전파되지 않습니다. 이는 다른 모든 설정에도 적용되는 동일한 비전파 규칙입니다.
output_format
default_format에서 지정한 포맷보다 우선합니다.
page
offset = limit * (page - 1)과 동일합니다. limit이 설정되고 offset이 설정되지 않은 경우에만 지정할 수 있습니다. 페이지 번호는 1부터 시작합니다. limit 및 offset과 마찬가지로 음수 및 소수 값을 지원합니다.
엔진이 파싱된 쿼리에 적용하는 쿼리 구성 설정으로, 쿼리를 파생 테이블로 래핑합니다. 기존 쿼리와 함께 사용할 수 있으며 모든 프로토콜에서 작동합니다. HTTP URL 매개변수, 쿼리 내 SETTINGS 절 또는 사용자 프로필을 통해 제공할 수 있습니다.
결과를 생성하는 SELECT / UNION 쿼리의 형태를 결정합니다. 쓰기 쿼리(INSERT … SELECT, CREATE … AS SELECT)에서는 소스 SELECT의 자체 SETTINGS 절에 이 설정이 있을 때만 적용됩니다. 프로필이나 세션에서 상속된 값 또는 INSERT / CREATE 문 자체에 설정된 값은 소스 SELECT에 전파되지 않습니다. 이는 다른 모든 설정에도 적용되는 동일한 비전파 규칙입니다.
paimon_target_snapshot_id
parallelize_output_from_storages
partial_result_on_first_cancel
per_part_index_stats
poll_interval
polyglot_dialect
postgresql_fault_injection_probability
predicate_statistics_sample_rate
system.predicate_statistics_log에 수집합니다. N > 0으로 설정하면 쿼리 ID를 기준으로 전체 쿼리 중 약 1/N을 샘플링합니다. 0은 비활성화됨을 의미합니다.
prefetch_buffer_size
print_pretty_type_names
DESCRIBE 쿼리와 toTypeName() 함수에서 여러 단계로 중첩된 타입 이름을 들여쓰기로 보기 좋게 출력할 수 있습니다.
예시:
우선순위
push_external_roles_in_interserver_queries
query_metric_log_interval
collect_interval_milliseconds 값을 사용하고, 해당 값이 없으면 기본값 1000을 사용합니다.
단일 쿼리에 대한 수집을 비활성화하려면 query_metric_log_interval을 0으로 설정하세요.
기본값: -1
queue_max_wait_ms
rabbitmq_max_wait_ms
readonly
recursive_cte_max_steps_in_type_inference
getLeastSupertype를 반복적으로 적용하여 결정됩니다. 타입 확장을 비활성화하고 비재귀 부분의 타입만 사용하려면 0으로 설정하세요.
regexp_max_matches_per_row
- 양의 정수.
reject_expensive_hyperscan_regexps
remerge_sort_lowered_memory_bytes_ratio
remote_read_min_bytes_for_seek
rename_files_after_processing
- 유형: String
- 기본값: 빈 문자열
file 테이블 함수로 처리한 파일의 이름 변경 패턴을 지정할 수 있습니다. 이 옵션을 설정하면 파일 처리가 성공한 경우에만 file 테이블 함수가 읽은 모든 파일의 이름이 플레이스홀더를 포함한 지정된 패턴에 따라 변경됩니다.
플레이스홀더
%a— 전체 원본 파일 이름(예: “sample.csv”)%f— 확장자를 제외한 원본 파일 이름(예: “sample”)%e— 점을 포함한 원본 파일 확장자(예: “.csv”)%t— 타임스탬프(마이크로초 단위)%%— 퍼센트 기호(”%“)
예시
-
옵션:
--rename_files_after_processing="processed_%f_%t%e" -
쿼리:
SELECT * FROM file('sample.csv')
sample.csv를 성공적으로 읽으면 파일 이름이 processed_sample_1683473210851438.csv로 변경됩니다
replication_wait_for_inactive_replica_timeout
ALTER, OPTIMIZE 또는 TRUNCATE 쿼리를 실행할 때까지 대기할 시간(초)을 지정합니다.
가능한 값:
0— 대기하지 않습니다.- 음의 정수 — 무제한으로 대기합니다.
- 양의 정수 — 대기할 초 수입니다.
reserve_memory
workload 쿼리 설정값을 사용하여 WORKLOAD 계층 구조를 통해 수행됩니다.
워크로드에 사용 가능한 메모리가 충분하지 않으면 쿼리는 시작되지 않으며, 예약이 충족될 때까지 pending 상태로 대기합니다.
값이 0이면 예약하지 않음을 의미합니다.
이 설정은 MEMORY RESERVATION 리소스가 생성된 경우에만 적용됩니다.
RESTORE 시 테이블 엔진을 ReplicatedMergeTree에서 SharedMergeTree로 대체합니다.
Cloud 기본값: 1.
result_overflow_mode
throw: 예외를 발생시킵니다(기본값).break: 쿼리 실행을 중지하고 부분 결과를 반환합니다. 마치 소스 데이터가 모두 소진된 것처럼 동작합니다.
Break는 실행을
block 수준에서만 중단합니다. 즉, 반환되는 행 수는
max_result_rows보다 많고, max_block_size의 배수이며,
max_threads에 따라 달라집니다.
예시
Query
Result
rows_before_aggregation
secondary_indices_enable_bulk_filtering
select
SELECT 표현식 목록을 사용해 쿼리를 하위 쿼리로 감쌉니다. 비어 있지 않은 경우 결과를 생성하는 쿼리는 SELECT <expr_list> FROM (<query>)로 감싸집니다.
이는 엔진이 파싱된 쿼리에 적용하는 쿼리 구성 설정(파생 테이블로 감싸기)이므로 기존 쿼리와 함께 사용되며 모든 protocol에서 작동합니다. HTTP URL 매개변수, 쿼리 내 SETTINGS 절 또는 사용자 프로필을 통해 지정할 수 있습니다.
결과를 생성하는 SELECT / UNION 쿼리의 형태를 지정합니다. 쓰기 쿼리(INSERT … SELECT, CREATE … AS SELECT)에서는 소스 SELECT의 자체 SETTINGS 절에 이 설정이 지정된 경우에만 적용됩니다. profile 또는 session에서 상속된 값이나 INSERT / CREATE 문 자체에 설정된 값은 소스 SELECT로 전파되지 않습니다. 이는 다른 모든 설정에도 적용되는 것과 동일한 비전파 규칙입니다.
select_sequential_consistency
이 설정은 SharedMergeTree와 ReplicatedMergeTree에서 동작 방식이 다릅니다. SharedMergeTree에서
select_sequential_consistency가 어떻게 동작하는지는 SharedMergeTree 일관성을 참조하십시오.SELECT 쿼리의 순차 일관성을 활성화하거나 비활성화합니다. 이 설정을 사용하려면 insert_quorum_parallel이 비활성화되어 있어야 합니다(기본적으로 활성화됨).
가능한 값:
- 0 — 비활성화.
- 1 — 활성화.
insert_quorum으로 실행된 모든 이전 INSERT 쿼리의 데이터를 포함하는 레플리카에서만 클라이언트가 SELECT 쿼리를 실행하도록 허용합니다. 클라이언트가 일부 데이터만 가진 레플리카를 참조하면 ClickHouse는 예외를 발생시킵니다. SELECT 쿼리 결과에는 아직 레플리카 정족수에 기록되지 않은 데이터가 포함되지 않습니다.
insert_quorum_parallel이 활성화되어 있으면(기본값) select_sequential_consistency는 동작하지 않습니다. 병렬 INSERT 쿼리가 서로 다른 레플리카 정족수 집합에 기록될 수 있으므로, 단일 레플리카가 모든 쓰기를 수신했다고 보장할 수 없기 때문입니다.
관련 항목:
session_timezone
timeZone() 및 serverTimeZone()을 사용하여 세션 시간대와 서버 시간대를 확인할 수 있습니다.
가능한 값:
system.time_zones의 모든 시간대 이름(예:Europe/Berlin,UTC,Zulu)
- 첫 번째
SELECT쿼리에서 시간대를 명시하지 않고 사용한toDateTime()은session_timezone설정과 전역 시간대를 따릅니다. - 두 번째 쿼리에서는 String으로부터 DateTime을 파싱하며, 기존 컬럼
d의 유형과 시간대를 상속합니다. 따라서session_timezone설정과 전역 시간대는 반영되지 않습니다.
set_overflow_mode
throw: 예외를 발생시킵니다(기본값).break: 쿼리 실행을 중단하고 부분 결과를 반환합니다. 마치 원본 데이터가 소진된 것처럼 동작합니다.
single_join_prefer_left_table
skip_redundant_aliases_in_udf
- 1 — UDF에서 alias를 건너뛰고(대체하여) 처리합니다.
- 0 — UDF에서 alias를 건너뛰지 않고(대체하지 않고) 처리합니다.
sleep_after_receiving_query_ms
snappy_mode
file 및 url 같은 일반 파일 I/O 경로에서 snappy 압축에 사용할 wire 형식을 제어합니다. HTTP Content-Encoding: snappy는 항상 framing 포맷을 사용하며, 이 설정은 무시됩니다.
단일 snappy::Compress 호출로 생성되는 raw snappy 블록 포맷(예: SnappyBasicReadBuffer가 처리하는 Prometheus remote protocol payloads)은 별도의 프로토콜별 wire 형식이며, 이 설정으로 제어되지 않습니다.
가능한 값:
basic— Hadoop snappy 블록 포맷입니다. Hadoop에서 읽고 쓰는 파일과 호환됩니다. 읽기와 쓰기를 모두 지원합니다.framed— Google에서 정의한 표준 streaming 포맷인 Snappy framing 포맷입니다. 읽기와 쓰기를 모두 지원합니다.
sort
ORDER BY 절을 추가합니다. 선택적으로 +(ASC) 또는 -(DESC) 접두사를 붙인 쉼표로 구분된 식별자 목록이나 위치 기반 컬럼 참조(양의 정수)를 허용합니다. 예를 들어 sort=a,-b는 a를 오름차순, b를 내림차순으로 정렬하고, sort=1,-2는 첫 번째 컬럼을 오름차순, 두 번째 컬럼을 내림차순으로 정렬합니다. order와 함께 사용할 수 없습니다.
이는 엔진이 파싱된 쿼리에 적용하는 쿼리 구성 설정입니다. 쿼리를 파생 테이블로 감싸므로 기존 쿼리와 결합할 수 있으며 모든 protocol에서 작동합니다. HTTP URL 매개변수, 쿼리 내 SETTINGS 절 또는 사용자 프로필을 통해 지정할 수 있습니다.
결과를 생성하는 SELECT / UNION 쿼리의 형태를 구성합니다. 쓰기 쿼리(INSERT … SELECT, CREATE … AS SELECT)에서는 소스 SELECT의 자체 SETTINGS 절에 이 설정이 포함된 경우에만 적용됩니다. 프로필이나 session에서 상속되거나 INSERT / CREATE 문 자체에 설정된 값은 소스 SELECT로 전파되지 않습니다. 이는 다른 모든 설정에도 적용되는 동일한 비전파 규칙입니다.
sort_overflow_mode
throw: 예외를 발생시킵니다.break: 쿼리 실행을 중단하고 부분 결과를 반환합니다.
splitby_max_substrings_includes_remaining_string
max_substrings > 0이 지정된 splitBy*() 함수가 결과 배열의 마지막 요소에 남은 문자열을 포함할지 여부를 제어합니다.
가능한 값:
0- 남은 문자열은 결과 배열의 마지막 요소에 포함되지 않습니다.1- 남은 문자열이 결과 배열의 마지막 요소에 포함됩니다. 이는 Spark의split()함수와 Python의 ‘string.split()’ 메서드의 동작과 같습니다.
stop_refreshable_materialized_views_on_startup
SYSTEM STOP VIEWS를 사용한 것처럼 갱신 가능 구체화 뷰가 스케줄되지 않도록 합니다. 이후 SYSTEM START VIEWS 또는 SYSTEM START VIEW <name>를 사용해 수동으로 시작할 수 있습니다. 새로 생성되는 뷰에도 적용됩니다. 갱신 가능하지 않은 materialized view에는 영향을 주지 않습니다.
tcp_keep_alive_timeout
temporary_data_in_cache_reserve_space_wait_lock_timeout_milliseconds
throw_if_no_data_to_insert
clickhouse-client 또는 gRPC 인터페이스를 사용하는 INSERT에만 적용됩니다.
timeout_before_checking_execution_speed
min_execution_speed 이상이어야 함).
transfer_overflow_mode
throw: 예외를 발생시킵니다(기본값).break: 쿼리 실행을 중지하고 부분 결과를 반환합니다. 이는 소스 데이터가 모두 소진된 것처럼 동작합니다.
transform_null_in
NULL 값은 비교할 수 없습니다. NULL은 정의되지 않은 값을 의미하기 때문입니다. 따라서 expr = NULL 비교는 항상 false를 반환해야 합니다. 이 설정을 사용하면 IN 연산자에서 NULL = NULL이 true를 반환합니다.
Possible values:
예시
null_in 테이블을 예로 들어 보겠습니다:
traverse_shadow_remote_data_paths
union_default_mode
SELECT 쿼리 결과를 결합하는 모드를 설정합니다. 이 설정은 UNION ALL 또는 UNION DISTINCT를 명시적으로 지정하지 않고 UNION을 사용할 때만 적용됩니다.
가능한 값:
'DISTINCT'— ClickHouse는 쿼리를 결합한 결과에서 중복 행을 제거하여 출력합니다.'ALL'— ClickHouse는 쿼리를 결합한 결과에서 중복 행을 포함한 모든 행을 출력합니다.''—UNION과 함께 사용하면 ClickHouse에서 예외가 발생합니다.
unknown_packet_in_send_data
variant_throw_on_type_mismatch
true(기본값) — 예외를 발생시킵니다.false— 해당 행에 대해 대신NULL을 반환합니다.