add_http_cors_header
additional_result_filter
SELECT 쿼리 결과에 적용하는 추가 필터 표현식입니다.
이 설정은 어떤 하위 쿼리에도 적용되지 않습니다.
예시
additional_table_filters
aggregate_function_input_format
state— 직렬화된 상태를 담은 바이너리 문자열입니다(기본값). AggregateFunction 값이 바이너리 데이터로 제공된다고 간주하는 기본 동작입니다.value— 집계 함수 인수의 단일 값 또는 인수가 여러 개인 경우 그 값들의 튜플을 받는 포맷입니다. 해당 값들은 대응하는 IDataType 또는 DataTypeTuple을 사용해 역직렬화된 후 집계되어 상태를 형성합니다.array— 위value옵션에서 설명한 값들의 배열을 받는 포맷입니다. 배열의 모든 요소가 집계되어 상태를 형성합니다.
aggregate_function_input_format = 'value'로 설정한 경우:
aggregate_function_input_format = 'array' 설정 시:
value 및 array 포맷은 삽입 시 값을 생성하고 집계해야 하므로 기본 state 포맷보다 느립니다.
aggregate_functions_null_for_empty
- 0 — 비활성화됨.
- 1 — 활성화됨.
aggregate_functions_null_for_empty = 0이면 다음과 같이 출력됩니다:
aggregate_functions_null_for_empty = 1로 설정하면 결과는 다음과 같습니다:
aggregation_in_order_max_block_bytes
aggregation_memory_efficient_merge_threads
ai_function_max_api_calls_per_query
ai_function_max_input_tokens_per_query
ai_function_max_output_tokens_per_query
ai_function_max_retries
ai_function_retry_initial_delay_ms를 시작값으로 하는 지수 백오프가 적용됩니다.
ai_function_request_timeout_sec
ai_function_max_retries 설정에 따라 재시도될 수 있습니다.
ai_function_retry_initial_delay_ms
ai_function_throw_on_error
ai_function_throw_on_quota_exceeded
ai_function_max_input_tokens_per_query, ai_function_max_output_tokens_per_query 또는 ai_function_max_api_calls_per_query)를 초과하면 예외가 발생하며 쿼리가 중단됩니다. false인 경우 남은 행에는 컬럼 유형의 기본값이 적용됩니다(String의 경우 빈 문자열).
allow_aggregate_partitions_independently
allow_archive_path_syntax
<archive> :: <file>로 해석합니다.
allow_asynchronous_read_from_io_pool_for_merge_tree
allow_calculating_subcolumns_sizes_for_merge_tree_reading
allow_changing_replica_until_first_data_packet
receive_data_timeout 시간 초과 동안 Progress가 갱신되지 않은 경우). 비활성화하면 처음으로 진행이 발생한 이후에는 레플리카 변경을 허용하지 않습니다.
allow_create_index_without_type
allow_custom_error_code_in_throwif
throwIf() 함수에서 사용자 지정 오류 코드를 사용할 수 있게 합니다. true이면 발생하는 예외에 예상치 못한 오류 코드가 사용될 수 있습니다.
allow_ddl
allow_deprecated_database_ordinary
allow_deprecated_error_prone_window_functions
allow_deprecated_snowflake_conversion_functions
snowflakeToDateTime, snowflakeToDateTime64, dateTimeToSnowflake, dateTime64ToSnowflake는 더 이상 권장되지 않으며 기본적으로 비활성화되어 있습니다.
대신 snowflakeIDToDateTime, snowflakeIDToDateTime64, dateTimeToSnowflakeID, dateTime64ToSnowflakeID 함수를 사용하십시오.
더 이상 권장되지 않는 함수를 다시 활성화하려면(예: 전환 기간 중) 이 설정을 true로 지정하십시오.
allow_deprecated_syntax_for_merge_tree
allow_distributed_ddl
allow_drop_detached
allow_dynamic_type_in_join_keys
allow_execute_multiif_columnar
allow_experimental_ai_functions
aiGenerateContent)를 활성화합니다. 이러한 함수는 AI 프로바이더에 외부 HTTP 요청을 보냅니다.
allow_experimental_analyzer
enable_analyzer
새 쿼리 분석기의 사용을 허용합니다.
allow_experimental_cleanup_old_data_files_compaction
allow_experimental_codecs
allow_experimental_database_glue_catalog
allow_database_glue_catalog
catalog_type = ‘glue’로 설정된 실험적 데이터베이스 엔진 DataLakeCatalog를 허용합니다
Cloud 기본값: 1.
allow_experimental_database_hms_catalog
allow_experimental_database_iceberg
allow_database_iceberg
catalog_type = 'iceberg'인 실험적 데이터베이스 엔진 DataLakeCatalog의 사용을 허용합니다.
Cloud 기본값: 1.
allow_experimental_database_materialized_postgresql
allow_experimental_database_paimon_rest_catalog
allow_experimental_database_unity_catalog
allow_database_unity_catalog
catalog_type가 ‘unity’인 실험적 데이터베이스 엔진 DataLakeCatalog의 사용을 허용합니다
Cloud 기본값: 1.
allow_experimental_delta_kernel_rs
allow_experimental_delta_lake_writes
allow_experimental_expire_snapshots
ALTER TABLE ... EXECUTE expire_snapshots의 실행을 허용합니다.
allow_experimental_funnel_functions
allow_experimental_geo_types_in_iceberg
geometry 및 geography 필드 타입을 ClickHouse Geometry (Variant) 타입으로 파싱할 수 있도록 허용합니다.
allow_experimental_hash_functions
allow_experimental_iceberg_compaction
allow_experimental_join_right_table_sorting
true로 설정되어 있고 join_to_sort_minimum_perkey_rows 및 join_to_sort_maximum_table_rows의 조건이 충족되면, left 해시 조인 또는 inner 해시 조인의 성능을 향상시키기 위해 오른쪽 테이블을 키 기준으로 재정렬합니다.
allow_experimental_json_lazy_type_hints
allow_experimental_kafka_offsets_storage_in_keeper
allow_experimental_kusto_dialect
allow_experimental_materialized_postgresql_table
allow_experimental_nlp_functions
allow_experimental_nullable_tuple_type
Nullable이 될 수 있는지 여부는 제어하지 않습니다(예: Dynamic, Variant, JSON 또는 Tuple 컬럼에서 추출된 경우).
추출된 Tuple 서브컬럼이 Nullable이 될 수 있는지 제어하려면 allow_nullable_tuple_in_extracted_subcolumns를 사용하십시오.
allow_experimental_object_storage_queue_hive_partitioning
allow_experimental_paimon_storage_engine
allow_experimental_parallel_reading_from_replicas
enable_parallel_replicas
SELECT 쿼리를 실행할 때 각 세그먼트에서 최대 max_parallel_replicas개의 레플리카를 사용합니다. 읽기는 병렬로 수행되며 동적으로 조정됩니다. 0 - 비활성화, 1 - 활성화, 실패 시 자동으로 비활성화, 2 - 활성화, 실패 시 예외 발생
allow_experimental_polyglot_dialect
allow_experimental_prql_dialect
allow_experimental_query_deduplication
allow_experimental_time_series_aggregate_functions
allow_experimental_ts_to_grid_aggregate_function
Prometheus와 유사한 시계열 리샘플링, rate 및 delta 계산을 위한 실험적인 timeSeries* 집계 함수입니다.
allow_experimental_time_series_table
- 0 — TimeSeries 테이블 엔진이 비활성화됩니다.
- 1 — TimeSeries 테이블 엔진이 활성화됩니다.
allow_experimental_unique_key
UNIQUE KEY 절이 포함된 테이블을 생성할 수 있도록 합니다.
allow_experimental_window_view
allow_experimental_ytsaurus_dictionary_source
allow_experimental_ytsaurus_table_engine
allow_experimental_ytsaurus_table_function
allow_fuzz_query_functions
fuzzQuery 함수를 활성화합니다.
allow_general_join_planning
allow_get_client_http_header
getClientHTTPHeader의 사용을 허용합니다. Cookie와 같은 일부 헤더에는 민감한 정보가 포함될 수 있으므로, 보안상의 이유로 기본적으로는 활성화되어 있지 않습니다. X-ClickHouse-* 및 Authentication 헤더는 항상 제한되며, 이 함수로는 가져올 수 없다는 점에 유의하십시오.
allow_hyperscan
allow_iceberg_remove_orphan_files
allow_insert_into_iceberg
allow_experimental_insert_into_iceberg
Iceberg에 insert 쿼리를 실행하도록 허용합니다.
allow_introspection_functions
- 1 — 인트로스펙션 함수가 활성화됩니다.
- 0 — 인트로스펙션 함수가 비활성화됩니다.
- Sampling Query Profiler
- 시스템 테이블 trace_log
allow_key_condition_coalesce_rewrite
coalesce(a_1, ..., a_N) <op> const 형태의 프레디케이트(ifNull 형태나 상수가 왼쪽에 있는 동등한 경우 포함)를 (a_1 <op> const) OR (a_1 IS NULL AND a_2 <op> const) OR ... OR (a_1 IS NULL AND ... AND a_{N-1} IS NULL AND a_N <op> const) 형태의 논리합으로 재작성하므로, 각 a_i에 대한 컬럼별 프라이머리 키와 스킵 인덱스를 사용할 수 있습니다. coalesce(a, 42, b) 및 coalesce(a, b, 42)와 같은 일부 상수 포함 형태도 처리합니다. 인수 목록은 coalesce 자체와 마찬가지로 정규화되며(NULL 리터럴은 제거되고, 첫 번째 비-Nullable 인수 뒤의 인수는 제거됨), 후행 비-NULL 상수가 있으면 마지막 분기로 내보냅니다. 이 재작성은 인덱스 프루닝에만 추가로 적용되며, 런타임 필터링에는 계속 원래 프레디케이트를 사용합니다.
allow_materialized_view_with_bad_select
allow_named_collection_override_by_default
allow_non_metadata_alters
allow_nonconst_timezone_arguments
allow_nondeterministic_mutations
dictGet과 같은 비결정적 함수를 복제된 테이블(Replicated Table)의 뮤테이션에 사용할 수 있도록 허용하는 사용자 수준 설정입니다.
예를 들어 딕셔너리는 노드 간 동기화 상태가 서로 다를 수 있으므로, 딕셔너리에서 값을 가져오는 뮤테이션은 기본적으로 복제된 테이블에서 허용되지 않습니다. 이 설정을 활성화하면 이러한 동작이 가능해지며, 사용되는 데이터가 모든 노드에서 동기화되어 있는지 확인하는 책임은 사용자에게 있습니다.
예시
allow_nondeterministic_optimize_skip_unused_shards
rand 또는 dictGet 등, 단 후자는 업데이트와 관련해 몇 가지 주의 사항이 있음)를 허용합니다.
가능한 값:
- 0 — 허용되지 않습니다.
- 1 — 허용됩니다.
allow_nullable_tuple_in_extracted_subcolumns
Tuple(...) 유형의 추출된 서브컬럼을 Nullable(Tuple(...))로 지정할 수 있는지 제어합니다.
false:Tuple(...)를 반환하고, 서브컬럼이 없는 행에는 기본 tuple 값을 사용합니다.true:Nullable(Tuple(...))를 반환하고, 서브컬럼이 없는 행에는NULL을 사용합니다.
Nullable(Tuple(...)) 컬럼을 생성할 수 있는지 여부는 제어하지 않습니다. 이는 allow_experimental_nullable_tuple_type에서 제어합니다.
ClickHouse는 서버 시작 시 로드된 이 설정 값을 사용합니다.
SET 또는 쿼리 수준의 SETTINGS로 변경해도 추출된 서브컬럼 동작은 바뀌지 않습니다.
추출된 서브컬럼 동작을 변경하려면 시작 프로필 구성(예: users.xml)에서 allow_nullable_tuple_in_extracted_subcolumns를 업데이트한 후 서버를 다시 시작하십시오.
allow_prefetched_read_pool_for_local_filesystem
allow_prefetched_read_pool_for_remote_filesystem
allow_push_predicate_ast_for_distributed_subqueries
allow_push_predicate_when_subquery_contains_with
allow_rank_dense_rank_arguments
RANK 및 DENSE_RANK 윈도우 함수에 인수를 전달할 수 있도록 허용합니다.
SQL 표준에 따르면 RANK 및 DENSE_RANK는 인수를 받지 않습니다. 즉, 이 함수들은
OVER (ORDER BY ...) 윈도우만 기준으로 행의 순위를 매깁니다. ClickHouse 26.5 이전 버전에서는
RANK(x) OVER (...)와 같은 쿼리에서 인수를 아무 경고 없이 받아들인 뒤 무시했기 때문에 사용자에게 혼란을 주었습니다
(표시된 인수가 순위 계산에 영향을 주는 것처럼 보이지만 실제로는 그렇지 않았습니다).
이 설정이 false(기본값)이면 RANK 및 DENSE_RANK는 모든 인수를 거부하고
NUMBER_OF_ARGUMENTS_DOESNT_MATCH 예외를 발생시킵니다. true로 설정하면 이전의 완화된 동작이
복원되며, 26.5 이전과 같이 인수가 아무 경고 없이 무시됩니다.
allow_reorder_prewhere_conditions
allow_settings_after_format_in_insert
INSERT 쿼리에서 FORMAT 뒤에 SETTINGS를 허용할지 여부를 제어합니다. SETTINGS의 일부가 값으로 해석될 수 있으므로, 사용은 권장되지 않습니다.
예시:
allow_settings_after_format_in_insert를 활성화한 경우에만 동작합니다:
- 0 — 허용하지 않습니다.
- 1 — 허용합니다.
사용 사례가 이전 구문에 의존하는 경우에만 이전 버전과의 호환성을 위해 이 설정을 사용하세요.
allow_simdjson
allow_special_serialization_kinds_in_output_formats
allow_statistics
allow_experimental_statistics
컬럼에 통계를 정의하고 통계를 관리할 수 있습니다.
allow_statistics_optimize
allow_statistic_optimize
통계를 사용한 쿼리 최적화를 허용합니다
allow_suspicious_codecs
allow_suspicious_fixed_string_types
allow_suspicious_indices
allow_suspicious_low_cardinality_types
FixedString(8_bytes_or_less)에 LowCardinality를 사용할 수 있도록 허용하거나 제한합니다.
작은 고정값에 LowCardinality를 사용하는 것은 일반적으로 비효율적입니다. ClickHouse는 각 행마다 숫자 인덱스를 저장하기 때문입니다. 그 결과 다음과 같은 문제가 발생할 수 있습니다.
- 디스크 공간 사용량이 늘어날 수 있습니다.
- 딕셔너리 크기에 따라 RAM 사용량이 더 높아질 수 있습니다.
- 추가 코딩/인코딩 작업으로 인해 일부 함수가 더 느리게 동작할 수 있습니다.
- 1 —
LowCardinality사용이 제한되지 않습니다. - 0 —
LowCardinality사용이 제한됩니다.
allow_suspicious_primary_key
PRIMARY KEY/ORDER BY(예: SimpleAggregateFunction)를 허용합니다.
allow_suspicious_ttl_expressions
allow_suspicious_types_in_group_by
allow_suspicious_types_in_order_by
allow_suspicious_variant_types
allow_unrestricted_reads_from_keeper
alter_move_to_space_execute_async
alter_partition_verbose_result
- 0 — 자세히 표시하지 않습니다.
- 1 — 자세히 표시합니다.
alter_sync
replication_alter_partitions_sync
ALTER, OPTIMIZE 또는 TRUNCATE 쿼리로 레플리카에서 실행되는 작업에 대해 어떻게 대기할지 지정합니다.
가능한 값:
0— 대기하지 않습니다.1— 자체 실행이 완료될 때까지 대기합니다.2— 모두의 실행이 완료될 때까지 대기합니다.3- 활성 레플리카의 실행이 완료될 때까지만 대기합니다.
0.
alter_sync는 Replicated 및 SharedMergeTree 테이블에만 적용되며, Replicated 또는 Shared가 아닌 테이블에 대해서는 아무런 동작도 하지 않습니다.alter_update_mode
UPDATE 명령을 포함한 ALTER 쿼리에 사용하는 모드입니다.
가능한 값:
heavy- 일반 mutation을 실행합니다.lightweight- 가능하면 경량 업데이트를 실행하고, 그렇지 않으면 일반 mutation을 실행합니다.lightweight_force- 가능하면 경량 업데이트를 실행하고, 그렇지 않으면 예외를 발생시킵니다.
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_compatibility_allow_compound_identifiers_in_unflatten_nested
SELECT a.b.c FROM table ARRAY JOIN a는 작동하지 않고, SELECT a FROM table에는 Nested a 결과에 a.b.c 컬럼이 포함되지 않습니다.
analyzer_compatibility_join_using_top_level_identifier
SELECT a + 1 AS b FROM t1 JOIN t2 USING (b)에서는 t1.b = t2.b가 아니라 t1.a + 1 = t2.b를 기준으로 join이 수행됩니다).
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 — 기존 방식이 활성화됩니다.
apply_deleted_mask
apply_mutations_on_fly
apply_patch_parts
true이면 경량 업데이트를 나타내는 patch parts가 SELECT 시 적용됩니다.
apply_patch_parts_join_cache_buckets
apply_prewhere_after_final
apply_row_policy_after_final
- 0 — 행 정책과 PREWHERE가 FINAL 전에 적용됩니다(기본값).
- 1 — 행 정책과 PREWHERE가 FINAL 후에 적용됩니다.
apply_settings_from_server
SET 쿼리 또는 SELECT 쿼리의 SETTINGS 섹션)가 아니라 사용자 프로필(users.xml 또는 ALTER USER 같은 쿼리)에서 설정해야 합니다. 클라이언트를 통해 false로 변경할 수는 있지만 true로는 변경할 수 없습니다(사용자 프로필에 apply_settings_from_server = false가 설정되어 있으면 서버가 설정을 보내지 않기 때문입니다).
참고로 초기에(24.12) 서버 설정(send_settings_to_client)이 있었지만, 이후 사용성을 개선하기 위해 이 클라이언트 설정으로 대체되었습니다.
archive_adaptive_buffer_max_size_bytes
arrow_flight_request_descriptor_type
- ‘path’ — FlightDescriptor::Path를 사용합니다(기본값이며, 대부분의 Arrow Flight 서버에서 작동함)
- ‘command’ — SELECT 쿼리와 함께 FlightDescriptor::Command를 사용합니다(Dremio에 필요함)
ast_fuzzer_any_query
ast_fuzzer_runs로 제어)는 읽기 전용 쿼리(SELECT, EXPLAIN, SHOW, DESCRIBE, EXISTS)만 퍼징합니다. true인 경우에는 DDL 및 INSERT를 포함한 모든 쿼리 타입을 퍼징합니다.
ast_fuzzer_runs
- 0: 비활성화(기본값)입니다.
- 0보다 크고 1보다 작은 값: 퍼즈된 쿼리 1개를 실행할 확률입니다.
- 1 이상인 값: 일반 쿼리마다 실행할 퍼즈된 쿼리 수입니다.
asterisk_include_alias_columns
SELECT *)에 ALIAS 컬럼을 포함합니다.
가능한 값:
- 0 - 비활성화됨
- 1 - 활성화됨
asterisk_include_materialized_columns
SELECT *)에 MATERIALIZED 컬럼을 포함할지 설정합니다.
사용 가능한 값:
- 0 - 비활성화
- 1 - 활성화
asterisk_include_virtual_columns
SELECT *)에 가상 컬럼을 포함합니다.
가능한 값:
- 0 - 비활성화됨
- 1 - 활성화됨
async_insert
async_insert_busy_timeout_decrease_rate
async_insert_busy_timeout_increase_rate
async_insert_busy_timeout_max_ms
async_insert_busy_timeout_ms
첫 번째 데이터가 도착한 시점부터, 쿼리별로 수집된 데이터를 덤프하기 전까지 대기하는 최대 시간입니다.
Cloud 기본값: 1000 (1s).
async_insert_busy_timeout_min_ms
async_insert_deduplicate
async_insert_max_data_size
104857600 (100 MiB).
async_insert_max_query_number
async_insert_deduplicate가 1인 경우에만 적용됩니다.
async_insert_poll_timeout_ms
async_insert_use_adaptive_busy_timeout
async_query_sending_for_remote
async_socket_for_remote
automatic_parallel_replicas_min_bytes_per_replica
automatic_parallel_replicas_mode=1인 경우에만 적용됨). 0은 임계값이 없음을 의미합니다.
읽어야 하는 총 바이트 수는 수집된 통계를 기반으로 추정됩니다.
automatic_parallel_replicas_mode
enable_analyzer = 1, enable_parallel_replicas != 0, parallel_replicas_local_plan = 1이 필요하며, cluster_for_parallel_replicas도 제공해야 합니다.
0 - 비활성화, 1 - 활성화, 2 - 통계 수집만 활성화됨(병렬 레플리카를 사용한 실행으로의 전환은 비활성화됨).
azure_allow_parallel_part_upload
azure_check_objects_after_upload
azure_connect_timeout_ms
azure_create_new_file_on_insert
azure_ignore_file_doesnt_exist
- 1 —
SELECT는 빈 결과를 반환합니다. - 0 —
SELECT는 예외를 발생시킵니다.
azure_list_object_keys_size
azure_max_blocks_in_multipart_upload
azure_max_get_burst
azure_max_get_rps와 같습니다.
azure_max_get_rps
azure_max_inflight_parts_for_one_file
azure_max_put_burst
azure_max_put_rps와 동일합니다.
azure_max_put_rps
azure_max_redirects
azure_max_single_part_copy_size
azure_max_single_part_upload_size
azure_max_single_read_retries
azure_max_unexpected_write_error_retries
azure_max_upload_part_size
azure_min_upload_part_size
azure_request_timeout_ms
azure_sdk_max_retries
azure_sdk_retry_initial_backoff_ms
azure_sdk_retry_max_backoff_ms
azure_skip_empty_files
- 0 — 빈 파일이 요청된 포맷과 호환되지 않으면
SELECT가 예외를 발생시킵니다. - 1 — 빈 파일에 대해
SELECT는 빈 결과를 반환합니다.
azure_strict_upload_part_size
azure_throw_on_zero_files_match
- 1 —
SELECT가 예외를 발생시킵니다. - 0 —
SELECT가 빈 결과를 반환합니다.
azure_truncate_on_insert
azure_upload_part_size_multiply_factor
azure_upload_part_size_multiply_parts_count_threshold
azure_use_adaptive_timeouts
true로 설정하면 모든 Azure 요청에서 처음 두 번의 시도는 더 짧은 송신 및 수신 timeout으로 수행됩니다.
false로 설정하면 모든 시도가 동일한 timeout으로 수행됩니다.
backup_restore_batch_size_for_keeper_multi
backup_restore_batch_size_for_keeper_multiread
backup_restore_failure_after_host_disconnected_for_seconds
backup_restore_finish_timeout_after_error_sec
backup_restore_keeper_fault_injection_probability
backup_restore_keeper_fault_injection_seed
backup_restore_keeper_max_retries
backup_restore_keeper_max_retries_while_handling_error
backup_restore_keeper_max_retries_while_initializing
backup_restore_keeper_retry_initial_backoff_ms
backup_restore_keeper_retry_max_backoff_ms
60000.
backup_restore_keeper_value_max_size
backup_restore_s3_retry_attempts
backup_restore_s3_retry_initial_backoff_ms
backup_restore_s3_retry_max_backoff_ms로 지정됩니다.
backup_restore_s3_retry_jitter_factor
backup_restore_s3_retry_max_backoff_ms까지 적용됩니다. 값은 [0.0, 1.0] 인터벌에 있어야 합니다
backup_restore_s3_retry_max_backoff_ms
backup_slow_all_threads_after_retryable_s3_error
true로 설정하면 동일한 백업 엔드포인트로 S3 요청을 실행하는 모든 스레드의 속도가
‘Sleep Down’과 같은 재시도 가능한 S3 오류가 단 하나의 S3 요청에서라도 발생한 후
늦춰집니다.
false로 설정하면 각 스레드는 다른 스레드와 독립적으로 S3 요청의 백오프를 처리합니다.
cache_warmer_threads
calculate_text_stack_trace
cancel_http_readonly_queries_on_client_close
SELECT)를 취소합니다.
Cloud 기본값: 1.
cast_ipv4_ipv6_default_on_conversion_error
cast_keep_nullable
Nullable 데이터 타입을 유지할지 여부를 설정합니다.
이 설정이 활성화되어 있고 CAST 함수의 인수가 Nullable이면 결과도 Nullable 타입으로 변환됩니다. 이 설정이 비활성화되면 결과는 항상 지정된 대상 타입 그대로 반환됩니다.
Possible values:
- 0 —
CAST결과는 지정된 대상 타입 그대로 반환됩니다. - 1 — 인수 타입이
Nullable이면CAST결과는Nullable(DestinationDataType)으로 변환됩니다.
Nullable 수정자가 적용된 결과가 반환됩니다:
- CAST 함수
cast_string_to_date_time_mode
-
'best_effort'— 확장 파싱을 활성화합니다. ClickHouse는 기본YYYY-MM-DD HH:MM:SS포맷과 모든 ISO 8601 날짜 및 시간 포맷을 파싱할 수 있습니다. 예를 들어'2018-06-08T01:02:03.000Z'가 있습니다. -
'best_effort_us'—best_effort와 유사합니다(parseDateTimeBestEffortUS에서 차이점을 확인하십시오) -
'basic'— 기본 파서를 사용합니다. ClickHouse는 기본YYYY-MM-DD HH:MM:SS또는YYYY-MM-DD포맷만 파싱할 수 있습니다. 예를 들어2019-08-20 10:18:56또는2019-08-20가 있습니다.
cast_string_to_dynamic_use_inference
cast_string_to_variant_use_inference
check_named_collection_dependencies
check_query_single_value_result
MergeTree 계열 엔진에서 CHECK TABLE 쿼리 결과에 표시되는 세부 수준을 정의합니다.
가능한 값:
- 0 — 쿼리에서 테이블의 각 개별 데이터 파트에 대한 검사 상태를 표시합니다.
- 1 — 쿼리에서 테이블 전체의 검사 상태를 표시합니다.
check_referential_table_dependencies
check_table_dependencies
checksum_on_read
cloud_mode
1.
cloud_mode_database_engine
2.
cloud_mode_engine
- 0 - 모두 허용
- 1 - DDLs를 *ReplicatedMergeTree를 사용하도록 재작성
- 2 - DDLs를 SharedMergeTree를 사용하도록 재작성
- 3 - 원격 디스크를 명시적으로 지정한 경우를 제외하고 DDLs를 SharedMergeTree를 사용하도록 재작성
- 4 - 3과 동일하며, 추가로 Distributed 대신 Alias를 사용합니다(Alias table은 Distributed table의 대상 테이블을 가리키므로 해당 로컬 테이블을 사용합니다)
2.
cluster_for_parallel_replicas
default.
cluster_function_process_archive_on_multiple_nodes
true로 설정하면 cluster 함수에서 아카이브를 처리하는 성능이 향상됩니다. 이전 버전에서 아카이브와 함께 cluster 함수를 사용하는 경우, 호환성을 유지하고 25.7+로 업그레이드할 때 오류를 방지하려면 false로 설정해야 합니다.
cluster_table_function_buckets_batch_size
bucket 분할 세분화 수준을 사용하는 cluster 테이블 함수에서 작업의 분산 처리에 사용되는 배치의 대략적인 크기(바이트 단위)를 정의합니다. 시스템은 최소 이 크기에 도달할 때까지 데이터를 누적합니다. 실제 크기는 데이터 경계에 맞추기 위해 약간 더 커질 수 있습니다.
cluster_table_function_split_granularity
file— 각 작업이 파일 전체를 처리합니다.bucket— 파일 내부의 데이터 블록별로 작업을 생성합니다(예: Parquet row group).
bucket과 같이 더 세밀한 세분화 수준을 선택하면 병렬성을 높일 수 있습니다.
예를 들어 Parquet 파일에 여러 row group이 포함된 경우, bucket 세분화 수준을 사용하면 각 group을 서로 다른 워커가 독립적으로 처리할 수 있습니다.
collect_hash_table_stats_during_aggregation
collect_hash_table_stats_during_joins
호환성
compatibility 설정을 사용하면, 설정에 지정한 이전 버전의 ClickHouse 기본 설정을 ClickHouse에서 사용합니다.
일부 설정이 기본값이 아닌 값으로 지정되어 있으면 해당 설정값은 그대로 유지됩니다(compatibility 설정은 수정되지 않은 설정에만 적용됩니다).
이 설정에는 22.3, 22.8과 같은 ClickHouse 버전 번호를 문자열로 지정합니다. 빈 값은 이 설정이 비활성화되었음을 의미합니다.
기본값은 비활성화입니다.
ClickHouse Cloud에서는 서비스 수준의 기본 호환성 설정을 ClickHouse Cloud Support에서 설정해야 합니다. 설정이 필요하면 지원 케이스를 제출하세요.
하지만 호환성 설정은 세션에서
SET compatibility = '22.3'를 사용하거나 쿼리에서 SETTINGS compatibility = '22.3'를 사용하는 등 표준 ClickHouse 설정 메커니즘을 통해 사용자, 역할(Role), 프로필(profile), 쿼리 또는 세션(session) 수준에서 재정의할 수 있습니다.compatibility_ignore_auto_increment_in_create_table
compatibility_ignore_collation_in_create_table
compatibility_s3_presigned_url_query_in_path
compile_aggregate_expressions
- 0 — JIT 컴파일 없이 집계를 수행합니다.
- 1 — JIT 컴파일을 사용해 집계를 수행합니다.
compile_expressions
compile_sort_description
connect_timeout
connect_timeout_with_failover_ms
connect_timeout_with_failover_secure_ms
connection_pool_max_wait_ms
- 양의 정수입니다.
- 0 — 무한 타임아웃입니다.
connections_with_failover_max_tries
convert_query_to_cnf
true로 설정하면 SELECT 쿼리가 논리곱 정규형(CNF)으로 변환됩니다. 쿼리를 CNF로 재작성하면 더 빠르게 실행될 수 있는 경우가 있습니다(자세한 설명은 이 GitHub issue를 참조하십시오).
예시로, 다음 SELECT 쿼리는 수정되지 않습니다(기본 동작).
convert_query_to_cnf를 true로 설정한 뒤 어떤 점이 달라지는지 살펴보겠습니다:
WHERE 절은 CNF로 다시 작성되지만, 결과 집합은 완전히 동일합니다. 즉, Boolean 논리는 변경되지 않습니다:
right이며, 이는 상관관계가 제거된 계획에 오른쪽에 서브쿼리 입력이 있는 RIGHT JOIN이 포함된다는 의미입니다.
가능한 값:
left- 상관관계 제거 과정에서 LEFT JOIN이 생성되며 입력 테이블은 왼쪽에 배치됩니다.right- 상관관계 제거 과정에서 RIGHT JOIN이 생성되며 입력 테이블은 오른쪽에 배치됩니다.
count_distinct_implementation
uniq* 함수를 지정합니다.
가능한 값:
count_distinct_optimization
count_matches_stop_at_empty_match
countMatches 함수에서 패턴이 길이가 0인 문자열과 일치하면 개수 계산을 중지합니다.
create_if_not_exists
CREATE 문에 IF NOT EXISTS를 적용합니다. 이 설정 또는 IF NOT EXISTS를 지정하고 해당 이름의 테이블이 이미 존재하는 경우 예외가 발생하지 않습니다.
create_index_ignore_unique
create_replicated_merge_tree_fault_injection_probability
create_table_empty_primary_key_by_default
cross_join_min_bytes_to_compress
cross_join_min_rows_to_compress
cross_to_inner_join_rewrite
data_type_default_nullable
- 1 — 컬럼 정의의 데이터 타입이 기본적으로
Nullable로 설정됩니다. - 0 — 컬럼 정의의 데이터 타입이 기본적으로
Nullable이 아닌 것으로 설정됩니다.
database_atomic_wait_for_drop_and_detach_synchronously
DROP 및 DETACH 쿼리에 SYNC 수정자를 추가합니다.
가능한 값:
- 0 — 쿼리가 지연되어 실행됩니다.
- 1 — 쿼리가 지연 없이 실행됩니다.
database_datalake_require_metadata_access
database_replicated_allow_explicit_uuid
database_replicated_allow_heavy_create
database_replicated_allow_only_replicated_engine
1.
database_replicated_allow_replicated_engine_arguments
database_replicated_always_detach_permanently
database_replicated_enforce_synchronous_settings
database_replicated_initial_query_timeout_sec
- 양의 정수입니다.
- 0 — 무제한입니다.
UNDROP TABLE 문을 사용해 테이블을 복구할 수 있습니다.
decimal_check_overflow
종속된 materialized view의 블록 중복 제거
deduplicate_insert
INSERT INTO의 블록 중복 제거를 활성화하거나 비활성화합니다(복제된 테이블의 경우).
이 설정은 insert_deduplicate 및 async_insert_deduplicate 설정을 재정의합니다.
이 설정의 가능한 값은 다음 세 가지입니다:
- disable —
INSERT INTO쿼리의 중복 제거를 비활성화합니다. - enable —
INSERT INTO쿼리의 중복 제거를 활성화합니다. - backward_compatible_choice — 특정 삽입 유형에서
insert_deduplicate또는async_insert_deduplicate가 활성화된 경우 중복 제거를 활성화합니다.
deduplicate_insert_select
INSERT SELECT의 블록 중복 제거를 활성화하거나 비활성화합니다(복제된 테이블(Replicated* tables)용).
이 설정은 INSERT SELECT 쿼리에서 insert_deduplicate 및 deduplicate_insert보다 우선 적용됩니다.
이 설정에는 가능한 값이 네 가지 있습니다:
- disable —
INSERT SELECT쿼리의 중복 제거가 비활성화됩니다. - force_enable —
INSERT SELECT쿼리의 중복 제거가 활성화됩니다. SELECT 결과가 안정적이지 않으면 예외가 발생합니다. - enable_when_possible —
insert_deduplicate가 활성화되어 있고 SELECT 결과가 안정적이면 중복 제거가 활성화되며, 그렇지 않으면 비활성화됩니다. - enable_even_for_bad_queries -
insert_deduplicate가 활성화되어 있으면 중복 제거가 활성화됩니다. SELECT 결과가 안정적이지 않으면 경고가 기록되지만, 쿼리는 중복 제거를 적용한 채 실행됩니다. 이 옵션은 이전 버전과의 호환성을 위한 것입니다. 예기치 않은 결과가 발생할 수 있으므로 가능하면 다른 옵션을 사용하십시오.
default_materialized_view_sql_security
DEFINER입니다.
default_max_bytes_in_join
max_bytes_in_join이 설정되지 않은 경우, 오른쪽 테이블의 최대 크기입니다.
default_normal_view_sql_security
SQL SECURITY 옵션을 설정할 수 있습니다. SQL security에 대한 자세한 내용.
기본값은 INVOKER입니다.
default_table_engine
CREATE 문에서 ENGINE이 설정되지 않았을 때 사용할 기본 테이블 엔진입니다.
가능한 값:
- 유효한 테이블 엔진 이름을 나타내는 문자열
SharedMergeTree.
예시
쿼리:
Engine을 지정하지 않은 모든 새 테이블이 Log 테이블 엔진을 사용합니다:
쿼리:
default_temporary_table_engine
Engine을 지정하지 않은 새 임시 테이블은 모두 Log 테이블 엔진을 사용합니다:
쿼리:
default_view_definer
DEFINER 옵션을 설정할 수 있습니다. SQL security에 대해 자세히 알아보기.
기본값은 CURRENT_USER입니다.
defer_partition_pruning_after_final
FINAL 쿼리에서는 파티션 프루닝이 적용되지 않습니다. 이는 26.3에서 도입된, 정확성을 보장하는 동작입니다. FINAL은 동일한 기본 키(primary key)를 공유하지만 서로 다른 파티션에 있는 행을 중복 제거해야 할 수 있으며, 파티션 프루닝이 적용되면 이런 행이 중복 제거 입력에서 조용히 제외될 수 있습니다.
비활성화되면 FINAL을 사용하더라도 파티션 프루닝이 적용되어 26.3 이전 동작으로 되돌아갑니다. 이는 파티션 컬럼에 대한 WHERE 프레디케이트가 있는 쿼리에서 훨씬 더 빠를 수 있지만, 동일한 기본 키를 가진 행이 서로 다른 파티션에 존재할 수 없을 때만 올바릅니다. 예를 들어, 삽입 시점에 파티션 컬럼이 설정되고 이후에는 절대 변경되지 않는 이벤트 로그 테이블이 이에 해당합니다.
이 설정은 파티션 키 컬럼이 정렬 키에 포함되지 않은 파티션 테이블에만 영향을 미치며, 그 외의 테이블에는 항상 파티션 프루닝이 적용됩니다.
가능한 값:
- 0 —
FINAL전에 파티션 프루닝 적용(26.3 이전 동작, 더 빠르지만 일반적인 경우에는 안전하지 않음). - 1 —
FINAL이후로 파티션 프루닝 지연(기본값, 정확성 보장).
delta_lake_enable_engine_predicate
delta_lake_enable_expression_visitor_logging
delta_lake_insert_max_bytes_in_data_file
delta_lake_insert_max_rows_in_data_file
delta_lake_log_metadata
delta_lake_reload_schema_for_consistency
delta_lake_snapshot_end_version
delta_lake_snapshot_start_version
delta_lake_snapshot_version
delta_lake_throw_on_engine_predicate_error
describe_compact_output
describe_include_subcolumns
- 0 —
DESCRIBE쿼리에 서브컬럼이 포함되지 않습니다. - 1 —
DESCRIBE쿼리에 서브컬럼이 포함됩니다.
describe_include_virtual_columns
방언
dictionary_use_async_executor
dictionary_validate_primary_key_type
distinct_overflow_mode
throw: 예외를 발생시킵니다(기본값).break: 쿼리 실행을 중단하고 부분 결과를 반환합니다. 마치 원본 데이터가 소진된 것처럼 동작합니다.
distributed_aggregation_memory_efficient
distributed_background_insert_batch
distributed_directory_monitor_batch_inserts
삽입된 데이터의 배치 전송 사용 여부를 설정합니다.
배치 전송이 활성화되면 분산 테이블 엔진은 삽입된 데이터의 여러 파일을 각각 따로 전송하는 대신 한 번의 작업으로 함께 전송하려고 시도합니다. 배치 전송은 서버 및 네트워크 리소스를 더 효율적으로 활용하여 클러스터 성능을 향상시킵니다.
가능한 값:
- 1 — 활성화됨.
- 0 — 비활성화됨.
distributed_background_insert_max_sleep_time_ms
distributed_directory_monitor_max_sleep_time_ms
분산 테이블 엔진이 데이터를 전송할 때의 최대 인터벌입니다. distributed_background_insert_sleep_time_ms 설정에 지정된 인터벌이 지수적으로 증가하는 것을 제한합니다.
가능한 값:
- 밀리초 단위의 양의 정수입니다.
distributed_background_insert_sleep_time_ms
distributed_directory_monitor_sleep_time_ms
분산 테이블 엔진이 데이터를 전송할 때 사용하는 기본 인터벌입니다. 실제 인터벌은 오류 발생 시 지수적으로 증가합니다.
가능한 값:
- 밀리초 단위의 양의 정수입니다.
distributed_background_insert_split_batch_on_failure
distributed_directory_monitor_split_batch_on_failure
실패 시 배치를 분할하는 기능을 활성화하거나 비활성화합니다.
경우에 따라 원격 세그먼트로 특정 배치를 전송하는 작업이, 이후의 복잡한 파이프라인(예: GROUP BY가 포함된 MATERIALIZED VIEW) 때문에 Memory limit exceeded 또는 이와 유사한 오류로 실패할 수 있습니다. 이 경우 재시도해도 도움이 되지 않으며(그 결과 해당 테이블의 분산 전송이 멈출 수 있습니다), 해당 배치의 파일을 하나씩 전송하면 INSERT가 성공할 수 있습니다.
따라서 이 설정을 1로 지정하면 이러한 배치에 대해서는 배칭이 비활성화됩니다(즉, 실패한 배치에 대해 distributed_background_insert_batch를 일시적으로 비활성화합니다).
가능한 값:
- 1 — 활성화됨.
- 0 — 비활성화됨.
이 설정은 손상된 배치에도 영향을 미칩니다(비정상적인 server(머신) 종료가 발생하고 분산 테이블 엔진에
fsync_after_insert/fsync_directories가 설정되지 않은 경우 이러한 배치가 나타날 수 있습니다).이 기능은 성능에 악영향을 줄 수 있으므로 자동 배치 분할에 의존하지 마십시오.
distributed_background_insert_timeout
insert_distributed_timeout
분산 테이블에 대한 삽입 쿼리의 시간 초과입니다. 이 설정은 insert_distributed_sync가 활성화된 경우에만 사용됩니다. 값이 0이면 시간 초과가 없음을 의미합니다.
distributed_cache_alignment
distributed_cache_bypass_connection_pool
distributed_cache_connect_backoff_max_ms
distributed_cache_connect_backoff_min_ms
distributed_cache_connect_max_tries
distributed_cache_connect_timeout_ms
distributed_cache_credentials_refresh_period_seconds
distributed_cache_data_packet_ack_window
distributed_cache_discard_connection_if_unread_data
distributed_cache_fetch_metrics_only_from_current_az
distributed_cache_file_cache_name
distributed_cache_log_mode
distributed_cache_max_unacked_inflight_packets
distributed_cache_min_bytes_for_seek
distributed_cache_pool_behaviour_on_limit
distributed_cache_prefer_bigger_buffer_size
filesystem_cache_prefer_bigger_buffer_size와 동일하지만 Distributed Cache용입니다.
distributed_cache_read_only_from_current_az
distributed_cache_read_request_max_tries
distributed_cache_receive_response_wait_milliseconds
distributed_cache_receive_timeout_milliseconds
20000.
distributed_cache_receive_timeout_ms
distributed_cache_send_timeout_ms
distributed_cache_tcp_keep_alive_timeout_ms
distributed_cache_throw_on_error
distributed_cache_use_clients_cache_for_read
distributed_cache_use_clients_cache_for_write
distributed_cache_wait_connection_from_pool_milliseconds
distributed_cache_pool_behaviour_on_limit이 wait인 경우, 연결 풀(connection pool)에서 연결을 얻기까지 대기하는 시간을 밀리초 단위로 지정합니다.
distributed_cache_write_request_max_tries
distributed_connections_pool_size
distributed_ddl_entry_format_version
6.
distributed_ddl_output_mode
throw— 쿼리가 완료된 모든 호스트의 쿼리 실행 상태가 포함된 결과 집합을 반환합니다. 일부 호스트에서 쿼리가 실패한 경우 첫 번째 예외를 다시 발생시킵니다. 일부 호스트에서 아직 쿼리가 완료되지 않았고 distributed_ddl_task_timeout을 초과한 경우TIMEOUT_EXCEEDED예외를 발생시킵니다.none—throw와 비슷하지만 분산 DDL 쿼리는 결과 집합을 반환하지 않습니다.null_status_on_timeout— 해당 호스트에서 쿼리가 아직 완료되지 않은 경우TIMEOUT_EXCEEDED를 발생시키는 대신, 결과 집합의 일부 행에서 실행 상태로NULL을 반환합니다.never_throw— 일부 호스트에서 쿼리가 실패한 경우에도TIMEOUT_EXCEEDED를 발생시키지 않으며 예외도 다시 발생시키지 않습니다.none_only_active-none과 비슷하지만Replicated데이터베이스의 비활성 레플리카는 기다리지 않습니다. 참고: 이 모드에서는 일부 레플리카에서 쿼리가 실행되지 않았고 나중에 백그라운드에서 실행될 예정인지 파악할 수 없습니다.null_status_on_timeout_only_active—null_status_on_timeout과 비슷하지만Replicated데이터베이스의 비활성 레플리카는 기다리지 않습니다throw_only_active—throw와 비슷하지만Replicated데이터베이스의 비활성 레플리카는 기다리지 않습니다
none_only_active.
distributed_ddl_task_timeout
- 양의 정수.
- 0 — 비동기 모드.
- 음의 정수 — 무제한 시간 초과.
distributed_foreground_insert
insert_distributed_sync
Distributed 테이블에 데이터를 동기식으로 삽입할지 여부를 설정합니다.
기본적으로 Distributed 테이블에 데이터를 삽입하면 ClickHouse 서버는 데이터를 백그라운드 모드로 클러스터 노드에 전송합니다. distributed_foreground_insert=1이면 데이터가 동기식으로 처리되며, 모든 세그먼트에 모든 데이터가 저장된 후에만 INSERT 작업이 성공합니다(internal_replication이 true이면 각 세그먼트에서 최소 1개의 레플리카에 저장).
가능한 값:
0— 데이터가 백그라운드 모드로 삽입됩니다.1— 데이터가 동기식 모드로 삽입됩니다.
1.
관련 항목
distributed_group_by_no_merge
0— 비활성화됨(최종 쿼리 처리는 initiator 노드에서 수행됩니다).1- 분산 쿼리 처리에서 서로 다른 서버의 집계 상태를 머지하지 않습니다(쿼리는 세그먼트에서 완전히 처리되고 initiator는 데이터만 프록시합니다). 서로 다른 세그먼트에 서로 다른 키가 있음이 확실할 때 사용할 수 있습니다.2-1과 같지만ORDER BY와LIMIT는 initiator에 적용합니다(distributed_group_by_no_merge=1처럼 쿼리가 원격 노드에서 완전히 처리되는 경우에는 불가능함).ORDER BY및/또는LIMIT가 있는 쿼리에 사용할 수 있습니다.
distributed_index_analysis
- distributed_index_analysis_for_non_shared_merge_tree
- distributed_index_analysis_min_parts_to_activate
- distributed_index_analysis_min_indexes_bytes_to_activate
distributed_index_analysis_only_on_coordinator
IN (SELECT ...))가 포함될 때 생성되는 O(N^2) 쿼리를 방지할 수 있습니다.
그렇지 않으면 각 팔로워 레플리카가 자체 분산 인덱스 분석을 개별적으로 트리거하기 때문입니다.
다만 서브쿼리에서 큰 테이블을 사용하는 경우에는 분산 인덱스 분석의 효율성이 떨어집니다.
distributed_insert_skip_read_only_replicas
- 0 — INSERT가 평소처럼 수행되며, 읽기 전용 레플리카로 전송되면 실패합니다
- 1 — 시작 노드가 데이터를 세그먼트로 보내기 전에 읽기 전용 레플리카를 건너뜁니다.
distributed_plan_default_reader_bucket_count
distributed_plan_default_shuffle_join_bucket_count
distributed_plan_execute_locally
distributed_plan_force_exchange_kind
- ” - 어떤 종류의 Exchange 연산자도 강제하지 않고 옵티마이저가 선택하도록 합니다.
- ‘Persisted’ - 객체 스토리지의 임시 파일을 사용합니다.
- ‘Streaming’ - 네트워크를 통해 exchange 데이터를 스트리밍합니다.
distributed_plan_force_shuffle_aggregation
distributed_plan_max_rows_to_broadcast
distributed_plan_optimize_exchanges
distributed_plan_prefer_replicas_over_workers
distributed_product_mode
- IN 및 JOIN 서브쿼리에만 적용됩니다.
- FROM 절에서 2개 이상의 세그먼트를 포함하는 분산 테이블을 사용하는 경우에만 적용됩니다.
- 서브쿼리가 2개 이상의 세그먼트를 포함하는 분산 테이블과 관련된 경우에만 적용됩니다.
- 테이블 값 함수인 remote에는 사용되지 않습니다.
deny— 기본값입니다. 이러한 유형의 서브쿼리 사용을 금지합니다(“Double-distributed in/JOIN subqueries is denied” 예외를 반환합니다).local— 대상 서버(세그먼트)에 맞게 서브쿼리의 데이터베이스와 테이블을 로컬 것으로 대체하고, 일반IN/JOIN.은 그대로 유지합니다.global—IN/JOIN쿼리를GLOBAL IN/GLOBAL JOIN.으로 대체합니다.allow— 이러한 유형의 서브쿼리 사용을 허용합니다.
distributed_push_down_limit
- 네트워크를 통해 불필요한 추가 행을 전송하는 것
- initiator 노드에서 LIMIT를 초과하는 행을 처리하는 것
distributed_push_down_limit가 다음 조건 중 하나 이상을 만족하는 경우에만 쿼리 실행 방식을 변경하므로, 더 이상 부정확한 결과가 발생하지 않습니다.
- distributed_group_by_no_merge > 0.
- 쿼리에
GROUP BY/DISTINCT/LIMIT BY는 없고,ORDER BY/LIMIT는 있습니다. - 쿼리에
GROUP BY/DISTINCT/LIMIT BY와ORDER BY/LIMIT가 있으며, 다음 조건을 만족합니다.- optimize_skip_unused_shards가 활성화되어 있습니다.
- optimize_distributed_group_by_sharding_key가 활성화되어 있습니다.
- 0 — 비활성화됨.
- 1 — 활성화됨.
- distributed_group_by_no_merge
- optimize_skip_unused_shards
- optimize_distributed_group_by_sharding_key
distributed_replica_error_cap
- 유형: 부호 없는 정수
- 기본값: 1000
- load_balancing
- 테이블 엔진 Distributed
- distributed_replica_error_half_life
- distributed_replica_max_ignored_errors
distributed_replica_error_half_life
- 유형: 초
- 기본값: 60초
- load_balancing
- 테이블 엔진 Distributed
- distributed_replica_error_cap
- distributed_replica_max_ignored_errors
distributed_replica_max_ignored_errors
- 유형: unsigned int
- 기본값: 0
load_balancing 알고리즘 기준) 무시할 오류 수입니다.
관련 항목:
do_not_merge_across_partitions_select_final
dynamic_disk_allow_from_env
disk() 함수의 인수에서 from_env 치환을 사용할 수 있도록 합니다.
테이블 스토리지를 정의할 때 사용자가 임의의 환경 변수를 읽지 못하도록 기본적으로 비활성화되어 있습니다.
dynamic_disk_allow_from_zk
disk() 함수의 인수)에서 from_zk 치환을 사용할 수 있도록 허용합니다.
기본적으로 비활성화되어 있습니다.
dynamic_disk_allow_include
disk() 함수의 인수)에서 include를 사용할 수 있도록 합니다.
기본적으로 비활성화되어 있습니다.
dynamic_throw_on_type_mismatch
true(기본값) — 예외를 발생시킵니다.false— 대신 해당 행에는NULL을 반환합니다.
empty_result_for_aggregation_by_constant_keys_on_empty_set
empty_result_for_aggregation_by_empty_set
enable_adaptive_memory_spill_scheduler
enable_add_distinct_to_in_subqueries
IN 서브쿼리에서 DISTINCT를 활성화합니다. 이 설정은 트레이드오프가 있는 설정입니다. 활성화하면 고유한 값만 전송되므로 분산 IN 서브쿼리용으로 전송되는 임시 테이블의 크기를 크게 줄일 수 있으며, 세그먼트 간 데이터 전송도 상당히 빨라질 수 있습니다.
하지만 이 설정을 활성화하면 중복 제거(DISTINCT)를 수행해야 하므로 각 노드에서 추가 병합 작업이 필요합니다. 네트워크 전송이 병목이고 추가 병합 비용을 감수할 수 있다면 이 설정을 사용하십시오.
enable_automatic_decision_for_merging_across_partitions_for_final
enable_blob_storage_log
enable_blob_storage_log_for_read_operations
enable_blob_storage_log도 활성화되어 있어야 합니다.
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_extended_results_for_datetime_functions = 0 | enable_extended_results_for_datetime_functions = 1 |
|---|---|---|
toStartOfYear | Date 또는 DateTime을 반환 | Date/DateTime 입력 시 Date/DateTime을 반환합니다Date32/DateTime64 입력 시 Date32/DateTime64를 반환합니다 |
toStartOfISOYear | Date 또는 DateTime을 반환 | Date/DateTime 입력 시 Date/DateTime을 반환합니다Date32/DateTime64 입력 시 Date32/DateTime64를 반환합니다 |
toStartOfQuarter | Date 또는 DateTime을 반환합니다 | Date/DateTime 입력 시 Date/DateTime을 반환합니다Date32/DateTime64 입력 시 Date32/DateTime64를 반환합니다 |
toStartOfMonth | Date 또는 DateTime을 반환 | Date/DateTime 입력에는 Date/DateTime를 반환합니다Date32/DateTime64 입력에는 Date32/DateTime64를 반환합니다 |
toStartOfWeek | Date 또는 DateTime 반환 | Date/DateTime 입력 시 Date/DateTime을 반환합니다Date32/DateTime64 입력 시 Date32/DateTime64를 반환합니다 |
toLastDayOfWeek | Date 또는 DateTime을 반환 | Date/DateTime 입력의 경우 Date/DateTime을 반환합니다Date32/DateTime64 입력의 경우 Date32/DateTime64를 반환합니다 |
toLastDayOfMonth | Date 또는 DateTime을 반환합니다 | Date/DateTime 입력 시 Date/DateTime을 반환합니다Date32/DateTime64 입력 시 Date32/DateTime64를 반환합니다 |
toMonday | Date 또는 DateTime 반환 | Date/DateTime 입력에는 Date/DateTime이 반환됩니다Date32/DateTime64 입력에는 Date32/DateTime64가 반환됩니다 |
toStartOfDay | DateTime을 반환합니다참고: 1970-2149 범위를 벗어난 값에서는 잘못된 결과가 반환됩니다 | Date/DateTime 입력의 경우 DateTime을 반환합니다Date32/DateTime64 입력의 경우 DateTime64를 반환합니다 |
toStartOfHour | DateTime을 반환합니다참고: 1970-2149 범위를 벗어나는 값은 잘못된 결과를 반환할 수 있습니다. | Date/DateTime 입력의 경우 DateTime을 반환합니다Date32/DateTime64 입력의 경우 DateTime64를 반환합니다 |
toStartOfFifteenMinutes | DateTime을 반환합니다참고: 1970-2149 범위를 벗어나는 값에 대해서는 잘못된 결과가 반환됩니다. | Date/DateTime 입력의 경우 DateTime을 반환합니다Date32/DateTime64 입력의 경우 DateTime64를 반환합니다 |
toStartOfTenMinutes | DateTime을 반환합니다참고: 1970-2149 범위를 벗어나는 값에서는 잘못된 결과가 반환됩니다 | Date/DateTime 입력에는 DateTime을 반환합니다Date32/DateTime64 입력에는 DateTime64를 반환합니다 |
toStartOfFiveMinutes | DateTime을 반환합니다참고: 1970-2149 범위를 벗어나는 값에서는 잘못된 결과가 반환됩니다 | Date/DateTime 입력 시 DateTime을 반환합니다Date32/DateTime64 입력 시 DateTime64를 반환합니다 |
toStartOfMinute | DateTime을 반환합니다참고: 1970-2149 범위를 벗어나는 값에 대해서는 잘못된 결과가 반환됩니다 | Date/DateTime 입력에는 DateTime을 반환합니다Date32/DateTime64 입력에는 DateTime64를 반환합니다 |
timeSlot | DateTime을 반환합니다참고: 1970-2149 범위를 벗어나는 값에서는 잘못된 결과가 반환됩니다 | Date/DateTime 입력의 경우 DateTime을 반환합니다Date32/DateTime64 입력의 경우 DateTime64를 반환합니다 |
enable_filesystem_cache
enable_filesystem_cache_log
enable_filesystem_cache_on_write_operations
write-through 캐시를 활성화하거나 비활성화합니다. false로 설정하면 쓰기 작업에서 write-through 캐시가 비활성화됩니다. true로 설정하면 server config의 cache disk 구성 섹션에서 cache_on_write_operations가 활성화되어 있는 경우 write-through 캐시가 활성화됩니다.
자세한 내용은 “로컬 캐시 사용”을 참조하십시오.
Cloud 기본값: 1.
enable_filesystem_read_prefetches_log
enable_full_text_index
allow_experimental_full_text_index
true로 설정하면 텍스트 인덱스 사용을 허용합니다.
enable_global_with_statement
enable_hdfs_pread
hdfsPread를 사용합니다. 비활성화하면 HDFS 파일을 읽을 때 hdfsRead와 hdfsSeek를 사용합니다.
enable_http_compression
- 0 — 비활성화됨.
- 1 — 활성화됨.
enable_job_stack_trace
enable_join_fixed_hash_table_conversion
enable_join_runtime_filters
enable_join_transitive_predicates
A.x = B.x 및 B.x = C.x가 주어지면, 생성된 A.x = C.x 프레디케이트가
추가되어 join 순서 옵티마이저가 직접적인 (A JOIN C) 계획을 고려할 수 있습니다.
enable_lazy_columns_replication
enable_lightweight_delete
allow_experimental_lightweight_delete
MergeTree 테이블에서 경량한 삭제 DELETE 뮤테이션을 활성화합니다.
enable_lightweight_update
allow_experimental_lightweight_update
경량 업데이트를 사용할 수 있게 합니다.
enable_materialized_cte
enable_memory_bound_merging_of_aggregation_results
enable_multiple_prewhere_read_steps
enable_named_columns_in_function_tuple
enable_optimize_predicate_expression
SELECT 쿼리에서 프레디케이트 푸시다운을 활성화합니다.
프레디케이트 푸시다운은 분산 쿼리의 네트워크 트래픽을 크게 줄일 수 있습니다.
가능한 값:
- 0 — 비활성화됨
- 1 — 활성화됨
SELECT count() FROM test_table WHERE date = '2018-10-10'SELECT count() FROM (SELECT * FROM test_table) WHERE date = '2018-10-10'
enable_optimize_predicate_expression = 1이면 ClickHouse가 처리 과정에서 WHERE를 서브쿼리에 적용하므로, 두 쿼리의 실행 시간은 동일합니다.
enable_optimize_predicate_expression = 0이면 서브쿼리가 끝난 후 WHERE 절이 전체 데이터에 적용되므로, 두 번째 쿼리의 실행 시간이 훨씬 길어집니다.
enable_optimize_predicate_expression_to_final_subquery
enable_order_by_all
ORDER BY ALL 구문을 사용한 정렬 기능을 활성화하거나 비활성화합니다. 자세한 내용은 ORDER BY를 참조하십시오.
가능한 값:
- 0 — ORDER BY ALL을 비활성화합니다.
- 1 — ORDER BY ALL을 활성화합니다.
enable_parallel_blocks_marshalling
enable_parsing_to_custom_serialization
enable_positional_arguments
- 0 — 위치 인수가 지원되지 않습니다.
- 1 — 위치 인수가 지원됩니다. 컬럼 이름 대신 컬럼 번호를 사용할 수 있습니다.
enable_positional_arguments_for_projections
이 설정은 전문가 수준의 설정이므로 ClickHouse를 막 시작했다면 변경하지 않는 것이 좋습니다.
- 0 — 위치 인수가 지원되지 않습니다.
- 1 — 위치 인수가 지원됩니다. 컬럼 이름 대신 컬럼 번호를 사용할 수 있습니다.
enable_producing_buckets_out_of_order_in_aggregation
distributed_aggregation_memory_efficient 참조)에서 버킷을 순서와 다르게 생성할 수 있도록 허용합니다.
이 설정을 사용하면 집계 버킷 크기가 한쪽으로 치우친 경우, 레플리카가 id가 낮은 일부 큰 버킷을 계속 처리하는 동안 id가 더 높은 버킷을 initiator에 전송할 수 있어 성능이 향상될 수 있습니다.
단점은 메모리 사용량이 증가할 수 있다는 점입니다.
enable_reads_from_query_cache
SELECT 쿼리 결과를 쿼리 캐시에서 가져옵니다.
가능한 값:
- 0 - 비활성화
- 1 - 활성화
enable_s3_requests_logging
enable_scalar_subquery_optimization
enable_scopes_for_with_statement
이 설정을 활성화하면 계획 단계가 끝난 뒤 스냅샷에서 불필요한 데이터 파트를 제거하는 최적화가 비활성화됩니다.
그 결과, 오래 실행되는 쿼리가 실행되는 전체 동안 더 이상 사용되지 않는 파트를 계속 참조할 수 있으므로, 파트 정리가 지연되고 스토리지 부담이 커질 수 있습니다.이 설정은 현재 MergeTree 엔진 계열의 테이블에만 적용됩니다.
- 0 - 비활성화됨
- 1 - 활성화됨
enable_sharing_sets_for_mutations
enable_software_prefetch_in_aggregation
enable_software_prefetch_in_join
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 - 활성화
enforce_strict_identifier_format
engine_file_allow_create_multiple_files
JSON, ORC, Parquet 등)가 있는 경우, File 엔진 테이블에서 각 삽입 시마다 새 파일을 생성할지 여부를 설정합니다. 이 옵션을 활성화하면 삽입할 때마다 다음 패턴을 따르는 이름의 새 파일이 생성됩니다.
data.Parquet -> data.1.Parquet -> data.2.Parquet 등
가능한 값:
- 0 —
INSERT쿼리가 파일 끝에 새 데이터를 추가합니다. - 1 —
INSERT쿼리가 새 파일을 생성합니다.
engine_file_empty_if_not_exists
- 0 —
SELECT가 예외를 발생시킵니다. - 1 —
SELECT가 빈 결과를 반환합니다.
engine_file_skip_empty_files
- 0 — 빈 파일이 요청된 포맷과 호환되지 않으면
SELECT가 예외를 발생시킵니다. - 1 — 빈 파일에 대해
SELECT는 빈 결과를 반환합니다.
engine_file_truncate_on_insert
- 0 —
INSERT쿼리는 새 데이터를 파일 끝에 추가합니다. - 1 —
INSERT쿼리는 파일의 기존 내용을 새 데이터로 대체합니다.
engine_url_skip_empty_files
- 0 — 빈 파일이 요청된 포맷과 호환되지 않으면
SELECT에서 예외가 발생합니다. - 1 — 빈 파일이면
SELECT는 빈 결과를 반환합니다.
exact_rows_before_limit
except_default_mode
exclude_materialize_skip_indexes_on_insert
execute_exists_as_scalar_subquery
0.
external_storage_connect_timeout_sec
external_storage_max_read_bytes
external_storage_max_read_rows
external_storage_rw_timeout_sec
external_table_functions_use_nulls
- 0 — 테이블 함수가 널 허용 컬럼을 명시적으로 사용합니다.
- 1 — 테이블 함수가 널 허용 컬럼을 암묵적으로 사용합니다.
0으로 지정하면 테이블 함수는 널 허용 컬럼을 만들지 않고, NULL 대신 기본값을 삽입합니다. 이는 배열 내부의 NULL 값에도 적용됩니다.
external_table_strict_query
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(활성화)입니다.
filesystem_cache_allow_background_download
filesystem_cache_boundary_alignment
filesystem_cache_enable_background_download_during_fetch
filesystem_cache_enable_background_download_for_metadata_files_in_packed_storage
filesystem_cache_max_download_size
filesystem_cache_name
filesystem_cache_prefer_bigger_buffer_size
filesystem_cache_reserve_space_wait_lock_timeout_milliseconds
filesystem_cache_segments_batch_size
filesystem_cache_skip_download_if_exceeds_per_query_cache_write_limit
skip_download_if_exceeds_query_cache
쿼리 캐시 크기를 초과하면 원격 파일 시스템에서 다운로드를 건너뜁니다
filesystem_prefetch_max_memory_usage
filesystem_prefetch_step_bytes
auto를 의미합니다. 즉, 대략적으로 최적에 가까운 프리페치 간격이 자동으로 결정되지만, 항상 100% 최적이라고는 할 수 없습니다. 실제 값은 설정 filesystem_prefetch_min_bytes_for_single_read_task에 따라 달라질 수 있습니다.
filesystem_prefetch_step_marks
auto를 의미합니다. 즉, 대략적으로 최적의 프리페치 간격이 자동으로 결정되지만, 항상 100% 최적은 아닐 수 있습니다. 실제 값은 filesystem_prefetch_min_bytes_for_single_read_task 설정에 따라 달라질 수 있습니다.
filesystem_prefetches_limit
filesystem_prefetches_max_memory_usage 설정을 사용하는 것이 더 권장됩니다.
final
- 0 - 비활성화됨
- 1 - 활성화됨
finalize_projection_parts_synchronously
flatten_nested
- 1 — Nested 컬럼이 별도의 배열로 펼쳐집니다.
- 0 — Nested 컬럼이 튜플의 단일 배열로 유지됩니다.
0이면 임의의 중첩 수준을 사용할 수 있습니다.
예시
쿼리:
force_aggregate_partitions_independently
force_aggregation_in_order
force_data_skipping_indices
force_grouping_standard_compatibility
force_index_by_date
force_index_by_date=1이면 ClickHouse는 쿼리에 데이터 범위를 제한하는 데 사용할 수 있는 날짜 키 조건이 있는지 확인합니다. 적절한 조건이 없으면 예외를 발생시킵니다. 다만, 해당 조건이 실제로 읽어야 하는 데이터 양을 줄이는지는 확인하지 않습니다. 예를 들어 Date != ' 2000-01-01 ' 조건은 테이블의 모든 데이터와 일치하더라도 허용됩니다(즉, 쿼리 실행 시 전체 스캔이 필요합니다). MergeTree 테이블의 데이터 범위에 관한 자세한 내용은 MergeTree를 참조하십시오.
force_optimize_projection
SELECT 쿼리에서 프로젝션을 반드시 사용할지 여부를 설정합니다.
가능한 값:
- 0 — 프로젝션 최적화 사용은 필수가 아닙니다.
- 1 — 프로젝션 최적화 사용이 필수입니다.
force_optimize_projection_name
- string: 쿼리에서 사용되는 프로젝션 이름
force_optimize_skip_unused_shards
- 0 — 비활성화. ClickHouse는 예외를 발생시키지 않습니다.
- 1 — 활성화. 테이블에 샤딩 키가 있는 경우에만 쿼리 실행이 비활성화됩니다.
- 2 — 활성화. 테이블에 샤딩 키가 정의되어 있는지와 관계없이 쿼리 실행이 비활성화됩니다.
force_optimize_skip_unused_shards_nesting
force_optimize_skip_unused_shards의 적용 범위를 제어합니다(따라서 이 설정을 사용하려면 force_optimize_skip_unused_shards도 여전히 필요합니다). 이는 한 Distributed 테이블이 다른 Distributed 테이블을 조회하는 경우를 의미합니다.
가능한 값:
- 0 - 비활성화됩니다.
force_optimize_skip_unused_shards는 항상 작동합니다. - 1 — 첫 번째 수준에서만
force_optimize_skip_unused_shards를 활성화합니다. - 2 — 두 번째 수준까지
force_optimize_skip_unused_shards를 활성화합니다.
force_primary_key
force_primary_key=1이면 ClickHouse는 쿼리에 데이터 범위를 제한하는 데 사용할 수 있는 프라이머리 키 조건이 있는지 확인합니다. 적절한 조건이 없으면 예외를 발생시킵니다. 다만, 해당 조건으로 읽어야 하는 데이터 양이 실제로 줄어드는지는 확인하지 않습니다. MergeTree 테이블의 데이터 범위에 관한 자세한 내용은 MergeTree를 참조하십시오.
force_remove_data_recursively_on_drop
formatdatetime_e_with_space_padding
formatDateTime의 포매터 ‘%e’는 한 자리 수 일을 앞에 공백 한 칸을 붙여 출력합니다. 예를 들어 ‘2’가 아니라 ’ 2’로 출력됩니다.
formatdatetime_f_prints_scale_number_of_digits
formatdatetime_f_prints_single_zero
formatDateTime에서 Formatter ‘%f’는 포맷된 값에 초의 소수 부분이 없으면 0 6개 대신 0 하나를 출력합니다.
formatdatetime_format_without_leading_zeros
formatDateTime의 Formatter ‘%c’, ‘%l’, ‘%k’는 월과 시간을 앞의 0 없이 출력합니다.
formatdatetime_parsedatetime_m_is_month_name
fsync_metadata
.sql 파일을 쓸 때 fsync의 사용 여부를 설정합니다. 기본값은 활성화입니다.
서버에 지속적으로 생성되고 삭제되는 아주 작은 테이블이 수백만 개 있다면 이를 비활성화하는 것이 적절할 수 있습니다.
function_date_trunc_return_type_behavior
dateTrunc 함수의 반환 유형 동작을 변경할 수 있습니다.
가능한 값:
- 0 - 두 번째 인수가
DateTime64/Date32이면, 첫 번째 인수의 시간 단위와 관계없이 반환 유형은DateTime64/Date32입니다. - 1 -
Date32의 경우 결과는 항상Date입니다.DateTime64의 경우 시간 단위가second이상이면 결과는DateTime입니다.
function_implementation
function_json_value_return_type_allow_complex
- true — 허용합니다.
- false — 허용하지 않습니다.
function_json_value_return_type_allow_nullable
NULL을 반환하도록 허용할지 제어합니다.
- true — 허용
- false — 허용 안 함
function_locate_has_mysql_compatible_argument_order
- 0 — 함수
locate는(haystack, needle[, start_pos])인수를 허용합니다. - 1 — 함수
locate는(needle, haystack[, start_pos])인수를 허용합니다. (MySQL 호환 동작)
function_range_max_elements_in_block
- 양의 정수.
function_sleep_max_microseconds_per_block
sleep이 각 블록(block)에서 대기할 수 있는 최대 마이크로초 수입니다. 이보다 큰 값으로 호출하면 예외가 발생합니다. 이는 안전 임계값입니다.
function_visible_width_behavior
visibleWidth 동작의 버전입니다. 0 - code point 개수만 계산합니다. 1 - 너비가 0인 문자와 결합 문자를 정확히 계산하고, 전각 문자는 2로 계산하며, 탭 너비를 추정하고, 삭제 문자도 계산합니다.
functions_h3_default_if_invalid
geo_distance_returns_float64_on_float64_arguments
geoDistance, greatCircleDistance, greatCircleAngle 함수의 4개 인수가 모두 Float64이면 Float64를 반환하며, 내부 계산에는 배정밀도를 사용합니다. 이전 ClickHouse 버전에서는 이 함수들이 항상 Float32를 반환했습니다.
geotoh3_argument_order
geoToH3는 ‘lon_lat’로 설정된 경우 (lon, lat)를, ‘lat_lon’으로 설정된 경우 (lat, lon)을 인수로 받습니다.
glob_expansion_max_elements
grace_hash_join_initial_buckets
grace_hash_join_max_buckets
group_by_overflow_mode
throw: 예외를 발생시킵니다break: 쿼리 실행을 중지하고 부분 결과를 반환합니다any: 집합에 이미 들어간 키에 대해서만 집계를 계속하고, 새 키는 집합에 추가하지 않습니다.
any 값을 사용하면 GROUP BY의 근사 계산을 수행할 수 있습니다. 이 근사 계산의 품질은
데이터의 통계적 특성에 따라 달라집니다.
group_by_two_level_threshold
group_by_two_level_threshold_bytes
group_by_use_nulls
ROLLUP, CUBE 또는 GROUPING SETS 지정자를 사용하면 일부 결과 행을 생성할 때 일부 집계 키가 사용되지 않을 수 있습니다.
이러한 키에 해당하는 컬럼은 이 설정에 따라 해당 행에서 기본값 또는 NULL로 채워집니다.
가능한 값:
- 0 — 누락된 값을 채울 때 집계 키 타입의 기본값을 사용합니다.
- 1 — ClickHouse는 SQL 표준에 정의된 방식과 동일하게
GROUP BY를 실행합니다. 집계 키 타입은 널 허용으로 변환됩니다. 해당 집계 키가 사용되지 않은 행의 컬럼은 NULL로 채워집니다.
h3togeo_lon_lat_result_order
h3ToGeo는 값이 true이면 (lon, lat)을, 그렇지 않으면 (lat, lon)을 반환합니다.
handshake_timeout_ms
hdfs_create_new_file_on_insert
data.Parquet.gz -> data.1.Parquet.gz -> data.2.Parquet.gz 등입니다.
가능한 값:
- 0 —
INSERT쿼리가 파일 끝에 새 데이터를 추가합니다. - 1 —
INSERT쿼리가 새 파일을 생성합니다.
hdfs_ignore_file_doesnt_exist
- 1 —
SELECT는 빈 결과를 반환합니다. - 0 —
SELECT는 예외를 발생시킵니다.
hdfs_replication
hdfs_skip_empty_files
- 0 — 빈 파일이 요청한 포맷과 호환되지 않으면
SELECT가 예외를 발생시킵니다. - 1 — 빈 파일이면
SELECT가 빈 결과를 반환합니다.
hdfs_throw_on_zero_files_match
- 1 —
SELECT는 예외를 발생시킵니다. - 0 —
SELECT는 빈 결과를 반환합니다.
hdfs_truncate_on_insert
- 0 —
INSERT쿼리는 파일 끝에 새 데이터를 추가합니다. - 1 —
INSERT쿼리는 파일의 기존 내용을 새 데이터로 대체합니다.
hedged_connection_timeout_ms
highlight_max_matches_per_row
- 양의 정수.
hnsw_candidate_list_size_for_search
hsts_max_age
http_connection_timeout
- 양의 정수.
- 0 - 비활성화(무제한 타임아웃).
http_headers_progress_interval_ms
X-ClickHouse-Progress는 지정된 인터벌마다 최대 한 번만 전송됩니다.
http_headers_read_timeout
http_make_head_request
http_make_head_request 설정을 사용하면 HTTP에서 데이터를 읽는 동안 HEAD 요청을 실행해 크기 등 읽을 파일의 정보를 가져올 수 있습니다. 이 설정은 기본적으로 활성화되어 있으므로, server가 HEAD 요청을 지원하지 않는 경우에는 비활성화하는 것이 좋습니다.
http_max_field_name_size
http_max_field_value_size
http_max_fields
http_max_multipart_form_data_size
max memory usage 및 max execution time 제한은 HTTP 폼 데이터를 읽는 동안에는 적용되지 않습니다).
http_max_request_header_size
http_max_request_param_data_size
http_max_tries
http_max_uri_size
- 양의 정수.
http_native_compression_disable_checksumming_on_decompress
gzip 또는 deflate에는 사용되지 않습니다.
자세한 내용은 HTTP 인터페이스 설명을 참조하십시오.
가능한 값:
- 0 — 비활성화.
- 1 — 활성화.
http_receive_timeout
- 임의의 양의 정수.
- 0 - 비활성화됨(무한 timeout).
http_response_buffer_size
http_wait_end_of_query가 활성화된 경우) 디스크로 플러시하기 전에 서버 메모리에 버퍼링할 바이트 수입니다.
http_response_headers
SET http_response_headers = '{"Content-Type": "image/png"}'
http_retry_initial_backoff_ms
http_retry_max_backoff_ms
http_send_timeout
- 모든 양의 정수.
- 0 - 비활성화됨(무한 timeout).
default profile에만 적용됩니다. 변경 사항을 적용하려면 서버를 재시작해야 합니다.
http_skip_not_found_url_for_globs
http_wait_end_of_query
http_write_exception_in_output_format
http_zlib_compression_level
iceberg_compaction_data_cleanup
iceberg_compaction_delay_bias
iceberg_data_file_size_lower_threshold_compaction
iceberg_data_file_size_upper_threshold_compaction
iceberg_delete_data_on_drop
iceberg_expire_default_max_ref_age_ms
expire_snapshots가 사용하는 Iceberg 테이블 속성 history.expire.max-ref-age-ms의 기본값입니다.
iceberg_expire_default_max_snapshot_age_ms
expire_snapshots에서 사용하는 Iceberg 테이블 속성 history.expire.max-snapshot-age-ms의 기본값입니다.
iceberg_expire_default_min_snapshots_to_keep
expire_snapshots에서 해당 속성이 없을 경우 사용되는 Iceberg 테이블 속성 history.expire.min-snapshots-to-keep의 기본값입니다.
iceberg_insert_max_bytes_in_data_file
iceberg_insert_max_partitions
iceberg_insert_max_rows_in_data_file
iceberg_max_number_datafiles_to_compact
iceberg_metadata_compression_method
.metadata.json 파일의 압축 메서드입니다.
iceberg_metadata_log_level
system.iceberg_metadata_log에 기록되는 Iceberg 테이블 메타데이터의 로깅 수준을 제어합니다.
일반적으로 이 설정은 디버깅 목적으로 수정할 수 있습니다.
가능한 값:
- none - 메타데이터를 기록하지 않습니다.
- metadata - 루트 metadata.json 파일을 기록합니다.
- manifest_list_metadata - 위 항목에 더해 스냅샷에 해당하는 avro manifest 목록의 메타데이터를 기록합니다.
- manifest_list_entry - 위 항목에 더해 avro manifest 목록 항목을 기록합니다.
- manifest_file_metadata - 위 항목에 더해 순회한 avro manifest 파일의 메타데이터를 기록합니다.
- manifest_file_entry - 위 항목에 더해 순회한 avro manifest 파일 항목을 기록합니다.
iceberg_metadata_staleness_ms
iceberg_orphan_files_older_than_seconds
remove_orphan_files() 프로시저 호출에서 older_than 인수를 생략한 경우 사용됩니다. 기본값은 259200(3일)입니다.
iceberg_snapshot_id
iceberg_timestamp_ms
idle_connection_timeout
- 양의 정수(0 - 0초 후 즉시 닫음).
ignore_cold_parts_seconds
ignore_data_skipping_indices
xy_idx 인덱스를 무시하는 경우:
ignore_drop_queries_probability
ignore_format_null_for_explain
EXPLAIN 쿼리에서 FORMAT Null은 무시되고 대신 기본 출력 형식이 사용됩니다.
비활성화하면 FORMAT Null이 포함된 EXPLAIN 쿼리는 출력을 생성하지 않습니다(이전 버전과 호환되는 동작).
ignore_materialized_views_with_dropped_target_table
ignore_on_cluster_for_replicated_access_entities_queries
ignore_on_cluster_for_replicated_database
ignore_on_cluster_for_replicated_named_collections_queries
ignore_on_cluster_for_replicated_udf_queries
implicit_select
1 + 2도 유효한 쿼리가 됩니다.
clickhouse-local에서는 기본적으로 활성화되어 있으며, 명시적으로 비활성화할 수 있습니다.
implicit_table_at_top_level
implicit_transaction
inject_random_order_for_select_without_order_by
insert_allow_materialized_columns
insert_deduplicate
INSERT 시 블록 중복 제거를 활성화하거나 비활성화합니다(Replicated* 테이블).
가능한 값:
- 0 — 비활성화됨.
- 1 — 활성화됨.
INSERT 문으로 삽입된 블록은 중복 제거됩니다(데이터 복제 참조).
복제된 테이블에서는 기본적으로 각 파티션마다 가장 최근의 100개 블록에 대해서만 중복 제거가 수행됩니다(replicated_deduplication_window, replicated_deduplication_window_seconds 참조).
복제되지 않은 테이블은 non_replicated_deduplication_window를 참조하십시오.
insert_deduplication_token
- 모든 문자열
insert_deduplication_token은 비어 있지 않은 경우에만 중복 제거에 사용됩니다.
복제된 테이블에서는 기본적으로 각 파티션에 대해 가장 최근의 100개 삽입만 중복 제거됩니다(replicated_deduplication_window, replicated_deduplication_window_seconds 참조).
복제되지 않은 테이블은 non_replicated_deduplication_window를 참조하십시오.
insert_deduplication_token은 파티션 수준에서 작동합니다(insert_deduplication checksum과 동일). 여러 파티션에서 동일한 insert_deduplication_token을 사용할 수 있습니다.insert_keeper_fault_injection_probability
insert_keeper_fault_injection_seed
insert_keeper_max_retries
- 양의 정수입니다.
- 0 — 재시도는 비활성화됩니다
20.
Keeper 요청 재시도는 일정 시간 후에 수행됩니다. 이 시간은 다음 설정으로 제어됩니다: insert_keeper_retry_initial_backoff_ms, insert_keeper_retry_max_backoff_ms.
첫 번째 재시도는 insert_keeper_retry_initial_backoff_ms 후에 수행됩니다. 이후 대기 시간은 다음과 같이 계산됩니다:
insert_keeper_retry_initial_backoff_ms=100, insert_keeper_retry_max_backoff_ms=10000, insert_keeper_max_retries=8이면 타임아웃은 100, 200, 400, 800, 1600, 3200, 6400, 10000이 됩니다.
장애 허용 외에도 재시도는 사용자 경험을 개선하는 데 목적이 있습니다. 예를 들어 업그레이드로 인해 Keeper가 다시 시작되더라도 INSERT 실행 중 오류를 반환하지 않도록 해줍니다.
insert_keeper_retry_initial_backoff_ms
- 양의 정수입니다.
- 0 — timeout 없음
insert_keeper_retry_max_backoff_ms
- 양의 정수
- 0 — 최대 timeout이 제한되지 않음
insert_null_as_default
NULL을 삽입할 때 예외가 발생합니다. 컬럼 타입이 nullable인 경우에는 이 설정과 관계없이 NULL 값이 그대로 삽입됩니다.
이 설정은 INSERT … SELECT 쿼리에 적용됩니다. 참고로 SELECT 서브쿼리는 UNION ALL 절로 연결될 수 있습니다.
가능한 값:
- 0 — 널 허용이 아닌 컬럼에
NULL을 삽입하면 예외가 발생합니다. - 1 —
NULL대신 컬럼의 기본값이 삽입됩니다.
insert_quorum
이 설정은 SharedMergeTree에는 적용되지 않습니다. 자세한 내용은 SharedMergeTree 일관성을 참조하십시오.
insert_quorum < 2이면 쿼럼 쓰기가 비활성화됩니다.insert_quorum >= 2이면 쿼럼 쓰기가 활성화됩니다.insert_quorum = 'auto'이면 과반수(number_of_replicas / 2 + 1)를 쿼럼 수로 사용합니다.
INSERT는 insert_quorum_timeout 동안 ClickHouse가 insert_quorum개의 레플리카에 데이터를 정상적으로 기록한 경우에만 성공합니다. 어떤 이유로든 쓰기에 성공한 레플리카 수가 insert_quorum에 도달하지 못하면 해당 쓰기는 실패한 것으로 간주되며, ClickHouse는 이미 데이터가 기록된 모든 레플리카에서 삽입된 블록을 삭제합니다.
insert_quorum_parallel이 비활성화되면 쿼럼에 포함된 모든 레플리카의 상태가 일관되게 유지됩니다. 즉, 이전의 모든 INSERT 쿼리 데이터를 포함합니다(INSERT 시퀀스가 선형화됨). insert_quorum으로 기록된 데이터를 읽을 때 insert_quorum_parallel이 비활성화되어 있으면, select_sequential_consistency를 사용하여 SELECT 쿼리에 대해 순차 일관성을 활성화할 수 있습니다.
ClickHouse는 다음 경우 예외를 발생시킵니다.
- 쿼리 시점에 사용 가능한 레플리카 수가
insert_quorum보다 적은 경우 insert_quorum_parallel이 비활성화되어 있고, 이전 블록이 아직insert_quorum개의 레플리카에 삽입되지 않은 상태에서 데이터를 쓰려고 시도하는 경우. 이 상황은 사용자가insert_quorum을 사용하는 이전INSERT쿼리가 완료되기 전에 같은 테이블에 또 다른INSERT쿼리를 수행하려고 할 때 발생할 수 있습니다.
insert_quorum_parallel
이 설정은 SharedMergeTree에는 적용되지 않습니다. 자세한 내용은 SharedMergeTree 일관성을 참조하십시오.
INSERT 쿼리의 병렬 처리를 활성화하거나 비활성화합니다. 활성화하면 이전 쿼리가 아직 완료되지 않았더라도 추가 INSERT 쿼리를 보낼 수 있습니다. 비활성화하면 동일한 테이블에 대한 추가 쓰기가 거부됩니다.
가능한 값:
- 0 — 비활성화됨.
- 1 — 활성화됨.
insert_quorum_timeout
insert_shard_id
0이 아니면, 데이터를 동기적으로 삽입할 분산 테이블의 세그먼트를 지정합니다.
insert_shard_id 값이 올바르지 않으면 서버가 예외를 발생시킵니다.
requested_cluster의 세그먼트 수를 확인하려면 서버 구성을 확인하거나 다음 쿼리를 사용하십시오:
- 0 — 비활성화됨.
- 해당 분산 테이블의
1부터shards_num사이의 임의의 숫자.
interactive_delay
intersect_default_mode
jemalloc_collect_profile_samples_in_trace_log
jemalloc_enable_profiler
jemalloc_profile_text_collapsed_use_count
jemalloc_profile_text_output_format
jemalloc_profile_text_symbolize_with_inline
join_algorithm
- grace_hash
grace_hash_join_initial_buckets임). 이렇게 하면 각 버킷을 독립적으로 처리할 수 있습니다. 첫 번째 버킷의 행은 메모리 내 해시 테이블에 추가하고, 나머지는 디스크에 저장합니다. 해시 테이블이 메모리 한도(예: max_bytes_in_join로 설정된 값)를 초과할 만큼 커지면 버킷 수를 늘리고 각 행에 할당된 버킷을 다시 계산합니다. 현재 버킷에 속하지 않는 행은 모두 플러시한 뒤 다시 할당됩니다.
INNER/LEFT/RIGHT/FULL ALL/ANY JOIN을 지원합니다.
- hash
JOIN ON 절에서 OR로 결합된 여러 조인 키도 지원하는 가장 범용적인 구현입니다.
hash 알고리즘을 사용할 때는 JOIN의 오른쪽 부분을 RAM에 올립니다.
- parallel_hash
hash 조인의 변형입니다.
parallel_hash 알고리즘을 사용할 때는 JOIN의 오른쪽 부분을 RAM에 올립니다.
- partial_merge
RIGHT JOIN과 FULL JOIN은 ALL 엄격성에서만 지원됩니다(SEMI, ANTI, ANY, ASOF는 지원되지 않음).
partial_merge 알고리즘을 사용할 때 ClickHouse는 데이터를 정렬한 뒤 디스크에 dump합니다. ClickHouse의 partial_merge 알고리즘은 고전적인 구현과 약간 다릅니다. 먼저 ClickHouse는 오른쪽 테이블을 조인 키 기준으로 블록 단위로 정렬하고, 정렬된 블록에 대해 MinMax 인덱스를 생성합니다. 그런 다음 왼쪽 테이블의 일부를 join key 기준으로 정렬한 후 오른쪽 테이블과 조인합니다. MinMax 인덱스는 필요하지 않은 오른쪽 테이블 블록을 건너뛰는 데에도 사용됩니다.
- direct
direct(nested loop라고도 함) 알고리즘은 왼쪽 테이블의 행을 키로 사용해 오른쪽 테이블에서 lookup을 수행합니다.
이는 딕셔너리, EmbeddedRocksDB, MergeTree 테이블과 같은 특수 스토리지에서 지원됩니다.
MergeTree 테이블의 경우 이 알고리즘은 조인 키 필터를 스토리지 계층에 직접 푸시다운합니다. 키에 대해 테이블의 프라이머리 키 인덱스를 lookup에 사용할 수 있으면 더 효율적일 수 있지만, 그렇지 않으면 왼쪽 테이블의 각 블록마다 오른쪽 테이블 전체를 스캔합니다.
INNER 및 LEFT 조인만 지원하며, 다른 조건이 없는 단일 컬럼 동등 조인 키만 지원합니다.
- auto
auto로 설정하면 먼저 hash 조인을 시도하고, 메모리 한도를 초과하면 실행 중에 다른 알고리즘으로 전환합니다.
- full_sorting_merge
- prefer_partial_merge
partial_merge 조인을 사용하고, 그렇지 않으면 hash를 사용합니다. Deprecated이며, partial_merge,hash와 같습니다.
- default (deprecated)
direct,hash와 같으며, 즉 direct 조인과 hash 조인을 이 순서대로 사용하려고 시도합니다.
join_any_take_last_row
ANY 엄격성을 사용하는 JOIN 작업의 동작을 변경합니다.
이 설정은 Join 테이블 엔진을 사용하는
JOIN 작업에만 적용됩니다.- 0 — 오른쪽 테이블에 일치하는 행이 2개 이상 있으면, 발견된 첫 번째 행만 조인됩니다.
- 1 — 오른쪽 테이블에 일치하는 행이 2개 이상 있으면, 발견된 마지막 행만 조인됩니다.
join_default_strictness
ALL— 오른쪽 테이블에 일치하는 행이 여러 개 있으면, ClickHouse는 일치하는 행들로 카테시안 곱을 만듭니다. 이는 표준 SQL에서 일반적인JOIN동작입니다.ANY— 오른쪽 테이블에 일치하는 행이 여러 개 있으면, 처음 찾은 행만 조인됩니다. 오른쪽 테이블에 일치하는 행이 하나뿐이면ANY와ALL의 결과는 같습니다.ASOF— 정확히 일치하지 않을 수 있는 시퀀스를 조인할 때 사용합니다.빈 문자열— 쿼리에서ALL또는ANY를 지정하지 않으면 ClickHouse는 예외를 발생시킵니다.
join_on_disk_max_files_to_merge
- 2 이상의 임의의 양의 정수.
join_output_by_rowlist_perkey_rows_threshold
join_overflow_mode
THROW— ClickHouse가 예외를 발생시키고 작업을 중단합니다.BREAK— ClickHouse가 작업을 중단하고 예외를 발생시키지 않습니다.
THROW.
관련 항목
join_runtime_bloom_filter_bytes
enable_join_runtime_filters 설정 참조).
join_runtime_bloom_filter_hash_functions
enable_join_runtime_filters 설정 참조).
join_runtime_bloom_filter_max_ratio_of_set_bits
join_runtime_filter_blocks_to_skip_before_reenabling
join_runtime_filter_exact_values_limit
join_runtime_filter_pass_ratio_threshold_for_disabling
join_runtime_filter_blocks_to_skip_before_reenabling개 블록 동안 비활성화됩니다.
join_to_sort_maximum_table_rows
join_to_sort_minimum_perkey_rows
join_use_nulls
- 0 — 빈 셀은 해당 필드 유형의 기본값으로 채워집니다.
- 1 —
JOIN이 표준 SQL과 동일한 방식으로 동작합니다. 해당 필드의 유형은 Nullable로 변환되며, 빈 셀은 NULL로 채워집니다.
joined_block_split_single_row
max_joined_block_size_rows != 0이 반드시 설정되어 있어야 합니다.
이 설정을 max_joined_block_size_bytes와 함께 사용하면, 오른쪽 테이블에서 일치하는 항목이 많은 큰 행이 일부 포함된 편향된 데이터에서 과도한 메모리 사용량을 방지하는 데 도움이 됩니다.
joined_subquery_requires_alias
kafka_disable_num_consumers_limit
kafka_max_wait_ms
- 양의 정수입니다.
- 0 — timeout이 무한대입니다.
keeper_map_strict_mode
keeper_max_retries
keeper_retry_initial_backoff_ms
keeper_retry_max_backoff_ms
least_greatest_legacy_null_behavior
legacy_column_name_of_tuple_literal
lightweight_delete_mode
alter_update- 무거운 mutation을 생성하는ALTER UPDATE쿼리를 실행합니다.lightweight_update- 가능하면 경량 업데이트를 실행하고, 그렇지 않으면ALTER UPDATE를 실행합니다.lightweight_update_force- 가능하면 경량 업데이트를 실행하고, 그렇지 않으면 예외를 발생시킵니다.
lightweight_deletes_sync
mutations_sync와 같지만, 경량한 삭제의 실행만 제어합니다.
가능한 값:
| 값 | 설명 |
|---|---|
0 | 뮤테이션이 비동기적으로 실행됩니다. |
1 | 현재 서버에서 경량한 삭제가 완료될 때까지 쿼리가 대기합니다. |
2 | 모든 레플리카(있는 경우)에서 경량한 삭제가 완료될 때까지 쿼리가 대기합니다. |
3 | 쿼리는 활성 레플리카만 기다립니다. SharedMergeTree에서만 지원됩니다. ReplicatedMergeTree에서는 mutations_sync = 2와 동일하게 동작합니다. |
1.
limit
- 0 — 행 수에 제한이 없습니다.
- 양의 정수.
load_balancing
Random (기본 설정)
Nearest Hostname
호스트명 Levenshtein 거리
nearest_hostname와 동일하지만, Levenshtein distance를 기준으로 호스트명을 비교합니다. 예시:
정의된 순서대로
첫 번째 또는 임의
first_or_random 알고리즘은 in_order 알고리즘의 문제를 해결합니다. in_order에서는 레플리카 하나에 장애가 발생하면 다음 레플리카에 부하가 2배로 몰리고, 나머지 레플리카는 평소와 같은 양의 트래픽을 처리합니다. first_or_random 알고리즘을 사용하면 계속 사용 가능한 레플리카에 부하가 고르게 분산됩니다.
load_balancing_first_offset 설정을 사용하면 첫 번째 레플리카를 명시적으로 지정할 수 있습니다. 이를 통해 레플리카 간 쿼리 워크로드의 리밸런싱을 더 세밀하게 제어할 수 있습니다.
라운드 로빈
round_robin 정책을 사용하는 쿼리만 집계합니다).
load_balancing_first_offset
load_marks_asynchronously
1.
local_filesystem_read_method
local_filesystem_read_prefetch
lock_acquire_timeout
DEADLOCK_AVOIDED와 함께 “Locking attempt timed out! Possible deadlock avoided. Client should retry.” 예외를 발생시킵니다.
Possible values:
- 양의 정수(초)
- 0 — 잠금 시간 제한 없음
log_comment
log_comment 필드 값과 서버 로그에 기록할 설명 텍스트를 지정합니다.
이 설정을 사용하면 서버 로그의 가독성을 높일 수 있습니다. 또한 clickhouse-test를 실행한 후 system.query_log에서 테스트와 관련된 쿼리를 선별하는 데도 도움이 됩니다.
가능한 값:
- max_query_size를 넘지 않는 임의의 문자열입니다. max_query_size를 초과하면 서버에서 예외가 발생합니다.
log_formatted_queries
formatted_query 컬럼이 채워집니다).
가능한 값:
- 0 — 포맷된 쿼리는 시스템 테이블에 기록되지 않습니다.
- 1 — 포맷된 쿼리가 시스템 테이블에 기록됩니다.
log_processors_profiles
system.processors_profile_log 테이블에 기록합니다.
관련 항목:
log_profile_events
log_queries
log_queries_cut_to_length
log_queries_min_query_duration_ms
long_query_time과 비슷하다고 생각하면 됩니다). 즉, 이러한 쿼리는 다음 테이블에서 찾을 수 없습니다.
system.query_logsystem.query_thread_log
-
QUERY_FINISH -
EXCEPTION_WHILE_PROCESSING - 유형: 밀리초
- 기본값: 0 (모든 쿼리)
log_queries_min_type
query_log에 기록할 최소 유형입니다.
가능한 값:
QUERY_START(=1)QUERY_FINISH(=2)EXCEPTION_BEFORE_START(=3)EXCEPTION_WHILE_PROCESSING(=4)
query_log에 기록할 항목을 제한하는 데 사용할 수 있습니다. 예를 들어 오류에만 관심이 있다면 EXCEPTION_WHILE_PROCESSING을 사용할 수 있습니다:
log_queries_probability
- 0 — 시스템 테이블에 쿼리가 기록되지 않습니다.
- [0..1] 범위의 양의 부동소수점 수입니다. 예를 들어 설정 값이
0.5이면 전체 쿼리의 약 절반이 시스템 테이블에 기록됩니다. - 1 — 모든 쿼리가 시스템 테이블에 기록됩니다.
log_query_settings
log_query_threads
- 0 — 비활성화됨.
- 1 — 활성화됨.
log_query_views
low_cardinality_allow_in_native_format
LowCardinality 사용이 제한되면 ClickHouse 서버는 SELECT 쿼리에서는 LowCardinality 컬럼을 일반 컬럼으로 변환하고, INSERT 쿼리에서는 일반 컬럼을 LowCardinality 컬럼으로 변환합니다.
이 설정은 주로 LowCardinality 데이터 타입을 지원하지 않는 서드파티 클라이언트에 필요합니다.
가능한 값:
- 1 —
LowCardinality사용이 제한되지 않습니다. - 0 —
LowCardinality사용이 제한됩니다.
low_cardinality_max_dictionary_size
- 양의 정수 아무거나 가능합니다.
low_cardinality_use_single_dictionary_for_part
low_cardinality_use_single_dictionary_for_part = 1로 설정하십시오.
가능한 값:
- 1 — 데이터 파트에 여러 개의 딕셔너리를 생성할 수 없습니다.
- 0 — 데이터 파트에 여러 개의 딕셔너리를 생성할 수 있습니다.
low_priority_query_wait_time_ms
priority 설정 참조), 낮은 우선순위의 쿼리는 높은 우선순위의 쿼리가 완료될 때까지 대기합니다. 이 설정은 대기 시간을 지정합니다.
make_distributed_plan
materialize_skip_indexes_on_insert
materialize_statistics_on_insert
materialize_ttl_after_modify
materialized_views_ignore_errors
materialized_views_squash_parallel_inserts
parallel_view_processing이 활성화된 경우, INSERT 쿼리는 각 max_insert_thread마다 대상 테이블에 파트를 생성합니다.
max_analyze_depth
max_ast_depth
현재는 구문 분석 중에는 검사하지 않고, 쿼리 구문 분석이 끝난 후에만 검사합니다.
즉, 구문 분석 중에 지나치게 깊은 구문 트리가 생성될 수 있지만,
쿼리는 실패합니다.
max_ast_elements
현재는 파싱 중에는 이를 검사하지 않고, 쿼리 파싱이 끝난 후에만 검사합니다.
즉, 파싱 중에 지나치게 깊은 구문 트리가 생성될 수 있지만,
쿼리는 실패합니다.
max_autoincrement_series
generateSerialID 함수가 생성할 수 있는 series 수의 제한입니다.
각 series는 Keeper의 노드 하나를 나타내므로, 그 수는 최대 수백만 개 수준으로 유지하는 것이 좋습니다.
max_backup_bandwidth
max_block_size
max_block_size 설정은 테이블(table)에서 데이터를 로드할 때 단일 블록에 포함할 권장 최대 행 수를 나타냅니다. 항상 max_block_size 크기의 블록이 테이블에서 로드되는 것은 아닙니다. ClickHouse가 더 적은 데이터만 읽어오면 된다고 판단하면 더 작은 블록을 처리합니다.
각 블록을 처리할 때 발생하는 비용이 커지지 않도록 블록 크기는 너무 작아서는 안 됩니다. 또한 LIMIT 절이 있는 쿼리가 첫 번째 블록을 처리한 후 빠르게 실행되도록 블록 크기가 너무 커서도 안 됩니다. max_block_size를 설정할 때는 여러 스레드에서 많은 컬럼을 추출할 때 메모리를 과도하게 사용하지 않도록 하고, 최소한의 cache 지역성도 유지하는 것을 목표로 해야 합니다.
max_bytes_before_external_group_by
GROUP BY 절을 외부 메모리에서 실행하도록 설정하거나 해제합니다.
(외부 메모리의 GROUP BY 참조)
가능한 값:
- 단일 GROUP BY 작업에서 사용할 수 있는 최대 RAM 용량(바이트)입니다.
0— 외부 메모리의GROUP BY가 비활성화됩니다.
GROUP BY 작업 중 메모리 사용량이 이 바이트 단위 임계값을 초과하면
‘외부 집계’ 모드가 활성화됩니다(데이터를 디스크에 spill).권장 값은 사용 가능한 시스템 메모리의 절반입니다.
max_bytes_before_external_join
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
ORDER BY 절을 외부 메모리(external memory)에서 실행할지 여부를 설정합니다. ORDER BY 구현 세부 사항을 참조하십시오.
ORDER BY 작업 중 메모리 사용량이 바이트 기준으로 이 임계값을 초과하면 “외부 정렬” 모드(데이터를 디스크로 기록)가 활성화됩니다.
가능한 값:
- 단일 ORDER BY 작업에 사용할 수 있는 최대 RAM 용량(바이트)입니다. 권장 값은 사용 가능한 시스템 메모리의 절반입니다.
0— 외부 메모리에서ORDER BY를 실행하지 않습니다.
max_bytes_before_remerge_sort
max_bytes_for_lazy_final
max_bytes_in_distinct
max_bytes_in_join
- 양의 정수.
- 0 — 메모리 제어가 비활성화됩니다.
max_bytes_in_set
max_bytes_ratio_before_external_group_by
GROUP BY에 사용할 수 있는 비율입니다. 이 한도에 도달하면
집계에 외부 메모리를 사용합니다.
예를 들어 0.6으로 설정하면 GROUP BY는 실행 시작 시 사용 가능한 메모리의 60%
(server/user/merges 기준)까지 사용할 수 있으며, 그 이후에는
외부 집계를 사용하기 시작합니다.
max_bytes_ratio_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
ORDER BY에 사용할 수 있는 가용 메모리의 비율입니다. 이 한도에 도달하면 외부 정렬이 사용됩니다.
예를 들어 0.6으로 설정하면 실행 시작 시 ORDER BY에 가용 메모리의 60%(server/user/merges 기준)까지 사용할 수 있으며, 그 이후부터는 외부 정렬을 사용하기 시작합니다.
참고로 max_bytes_before_external_sort는 여전히 적용되며, 디스크 스필은 정렬 블록이 max_bytes_before_external_sort보다 큰 경우에만 수행됩니다.
max_bytes_to_read
max_bytes_to_read_leaf
max_bytes_to_read=150
설정으로 두 테이블의 모든 데이터를 읽는 분산 쿼리는 전체 크기가
200바이트이므로 실패합니다. max_bytes_to_read_leaf=150인 쿼리는
리프 노드가 최대 100바이트만 읽으므로 성공합니다.
이 제한은 처리되는 각 데이터 청크에 대해 검사됩니다.
이 설정은
prefer_localhost_replica=1과 함께 사용할 때 불안정합니다.max_bytes_to_sort
throw로 설정된 sort_overflow_mode에
따라 결정됩니다.
max_bytes_to_transfer
max_columns_to_read
0 값은 제한이 없음을 의미합니다.
max_compress_block_size
이 설정은 전문가 수준의 설정이므로 ClickHouse를 막 사용하기 시작한 단계라면 변경하지 않는 것이 좋습니다.
max_concurrent_queries_for_all_users
max_concurrent_queries_for_all_users는 모든 사용자에 대해 99로 설정할 수 있으며, 데이터베이스 관리자는 서버에 과부하가 걸린 경우에도 조사용 쿼리를 실행할 수 있도록 자신의 값은 100으로 설정할 수 있습니다.
하나의 쿼리나 사용자에 대한 설정 변경은 다른 쿼리에 영향을 주지 않습니다.
가능한 값:
- 양의 정수
- 0 — 제한 없음
1000.
max_concurrent_queries_for_user
- 양의 정수
- 0 — 제한 없음
max_consume_snapshots
max_distributed_connections
max_distributed_depth
- 양의 정수.
- 0 — 깊이 제한 없음.
max_download_buffer_size
max_download_threads
max_estimated_execution_time
timeout_before_checking_execution_speed
이 만료될 때마다 확인됩니다.
max_execution_speed
timeout_before_checking_execution_speed
기간이 만료되면 각 데이터 블록에서 이를 확인합니다. 실행 속도가 너무 높으면 속도가 제한됩니다.
max_execution_speed_bytes
timeout_before_checking_execution_speed
시간이 만료되면 이를 검사합니다. 실행 속도가 너무 높으면 속도가 제한됩니다.
max_execution_time
max_execution_time 매개변수는 다소 이해하기 어려울 수 있습니다.
이 매개변수는 현재 쿼리 실행 속도를 기준으로 한 보간값에 따라 동작합니다.
(이 동작은 timeout_before_checking_execution_speed로 제어됩니다.)
예상 실행 시간이 지정된 max_execution_time를 초과하면 ClickHouse가 쿼리를 중단합니다. 기본적으로 timeout_before_checking_execution_speed는 10초로 설정되어 있습니다. 즉, 쿼리가 10초 동안 실행된 후부터 ClickHouse가 전체 실행 시간을 추정하기 시작합니다. 예를 들어 max_execution_time를 3600초(1시간)로 설정한 경우, 예상 시간이 이 3600초 제한을 초과하면 ClickHouse가 쿼리를 종료합니다. timeout_before_checking_execution_speed를 0으로 설정하면 ClickHouse는 max_execution_time의 기준으로 실제 경과 시간을 사용합니다.
쿼리 런타임이 지정된 초 수를 초과하면 동작은 timeout_overflow_mode에 따라 결정되며, 기본값은 throw입니다.
타임아웃은 데이터 처리 중 지정된 지점에서만 확인되므로, 쿼리도 그 지점에서만 중지될 수 있습니다.
현재는 집계 상태를 병합하는 중이나 쿼리 분석 중에는 중지할 수 없으므로,
실제 실행 시간은 이 설정값보다 길어질 수 있습니다.
max_execution_time_leaf
max_execution_time와 유사하지만,
분산 또는 원격 쿼리에서 리프 노드에만 적용됩니다.
예를 들어, 초기 노드에는 제한을 두지 않으면서 리프 노드의 실행 시간만 10s로 제한하려면,
중첩된 서브쿼리 설정에 max_execution_time을 두는 대신 다음과 같이 합니다:
max_execution_time_leaf를 사용할 수 있습니다:
max_expanded_ast_elements
max_fetch_partition_retries_count
max_final_threads
SELECT 쿼리의 데이터 읽기 단계에서 사용할 병렬 스레드의 최대 개수를 설정합니다.
가능한 값:
- 양의 정수
- 0 또는 1 — 비활성화됩니다.
SELECT쿼리는 단일 스레드로 실행됩니다.
max_http_get_redirects
10.
max_hyperscan_regexp_length
- 양의 정수입니다.
- 0 - 길이 제한이 없습니다.
max_hyperscan_regexp_total_length
- 양의 정수입니다.
- 0 - 길이에 제한이 없습니다.
max_insert_block_size
max_insert_block_size_rows
테이블에 삽입할 때 형성되는 블록의 최대 크기(행 수 기준)입니다.
이 설정은 다음 두 가지 상황에서 블록 형성을 제어합니다.
-
포맷 파싱: 서버가 임의의 인터페이스(HTTP, 인라인 데이터가 포함된 clickhouse-client, gRPC, PostgreSQL wire protocol)를 통해 행 기반 입력 형식(CSV, TSV, JSONEachRow 등)을 파싱할 때, 다음 조건에서 블록이 생성됩니다.
- min_insert_block_size_rows AND min_insert_block_size_bytes에 모두 도달한 경우, OR
- max_insert_block_size_rows OR max_insert_block_size_bytes 중 하나에 도달한 경우
-
INSERT 작업: INSERT 쿼리 실행 중이거나 데이터가 materialized views를 통해 흐를 때는
use_strict_insert_block_limits에 따라 이 설정의 동작이 달라집니다.-
활성화된 경우: 다음 조건에서 블록이 생성됩니다.
- 최소 임계값(AND): min_insert_block_size_rows AND min_insert_block_size_bytes에 모두 도달
- 최대 임계값(OR): max_insert_block_size_rows OR max_insert_block_size_bytes 중 하나에 도달
- 비활성화된 경우: min_insert_block_size_rows OR min_insert_block_size_bytes 중 하나에 도달하면 블록이 생성됩니다. max_insert_block_size 설정은 적용되지 않습니다.
-
활성화된 경우: 다음 조건에서 블록이 생성됩니다.
- 양의 정수.
max_insert_block_size_bytes
- 양의 정수입니다.
- 0 — 블록 형성에 이 설정이 사용되지 않습니다.
max_insert_delayed_streams_for_parallel_write
50.
max_insert_threads
INSERT SELECT 쿼리 실행에 사용할 수 있는 최대 스레드 수입니다.
가능한 값:
- 0 (또는 1) —
INSERT SELECT는 병렬 실행되지 않습니다. - 양의 정수. 1보다 커야 합니다.
- 메모리 8 GiB 노드는
1 - 메모리 16 GiB 노드는
2 - 더 큰 노드는
4
INSERT SELECT는 SELECT 부분도 병렬로 실행될 때만 효과가 있습니다. max_threads 설정을 참조하십시오.
값이 클수록 메모리 사용량도 증가합니다.
max_insert_threads_min_free_memory_per_thread
max_threads가 아니라 max_insert_threads에 적용된다는 점만 제외하면 max_threads_min_free_memory_per_thread와 동일합니다. 기본값이 더 큰 이유는 삽입 파이프라인이 일반적으로 읽기 파이프라인보다 스레드당 더 큰 버퍼(MergeTree 파트, compression 블록)를 유지하기 때문입니다.
여유 메모리 양이 max_insert_threads에 이 값을 곱한 값보다 적으면, max_insert_threads는 이에 맞게 최소 1까지 줄어듭니다.
이 제한을 비활성화하려면 0으로 설정합니다.
max_joined_block_size_bytes
max_joined_block_size_rows
벡터 검색 쿼리의 최대 LIMIT
max_local_read_bandwidth
max_local_write_bandwidth
max_memory_usage
0이면 제한이 없음을 의미합니다.
이 설정은 사용 가능한 메모리 용량이나 시스템의 전체 메모리 용량을 고려하지 않습니다. 이 제한은
단일 서버 내 단일 쿼리에 적용됩니다.
SHOW PROCESSLIST를 사용하면 각 쿼리의 현재 메모리 사용량을 확인할 수 있습니다.
최대 메모리 사용량은 각 쿼리별로 추적되며 로그에 기록됩니다.
다음 String 및 Array 인수를 사용하는 집계 함수의 상태에 대해서는
메모리 사용량이 완전히 추적되지 않습니다.
minmaxanyanyLastargMinargMax
max_memory_usage_for_user
및 max_server_memory_usage에 의해서도 제한됩니다.
max_memory_usage_for_user
max_memory_usage_for_user = 0).
max_memory_usage 설명도 참고하십시오.
예를 들어 clickhouse_read라는 이름의 사용자에 대해 max_memory_usage_for_user를 1000바이트로 설정하려면, 다음 SQL 문을 사용할 수 있습니다.
getSetting 함수를 사용하십시오:
max_network_bandwidth
- 양의 정수입니다.
- 0 — 대역폭 제어가 비활성화됩니다.
max_network_bandwidth_for_all_users
- 양의 정수입니다.
- 0 — 데이터 전송 속도 제어가 비활성화됩니다.
max_network_bandwidth_for_user
- 양의 정수입니다.
- 0 — 데이터 전송 속도 제한이 비활성화됩니다.
max_network_bytes
- 양의 정수입니다.
- 0 — 데이터 양 제한이 비활성화됩니다.
max_number_of_partitions_for_independent_aggregation
max_os_cpu_wait_time_ratio_to_throw
OSCPUWaitMicroseconds 메트릭)과 사용 시간(OSCPUVirtualTimeMicroseconds 메트릭) 간의 최대 비율입니다. 확률 계산에는 최소 비율과 최대 비율 사이의 선형 보간을 사용하며, 이 지점에서 확률은 1이 됩니다.
max_parallel_replicas
- 양의 정수.
SAMPLE 키를 사용한 병렬 처리
- 파티셔닝 키에서 샘플링 키의 위치가 효율적인 범위 스캔에 적합하지 않습니다.
- 테이블에 샘플링 키를 추가하면 다른 컬럼으로 필터링하는 효율이 떨어집니다.
- 샘플링 키가 계산 비용이 큰 표현식입니다.
- 클러스터의 지연 시간 분포에 긴 꼬리가 있어, 더 많은 서버에 쿼리할수록 전체 쿼리 지연 시간이 증가합니다.
parallel_replicas_custom_key를 사용한 병렬 처리
max_parser_backtracks
max_parser_depth
- 양의 정수
- 0 — 재귀 깊이가 무제한입니다.
max_parsing_threads
max_partition_size_to_drop
0은 제한 없이 파티션을 삭제할 수 있음을 의미합니다.
Cloud 기본값: 1 TB.
이 쿼리 설정은 해당 서버 설정 값을 재정의합니다. max_partition_size_to_drop를 참조하십시오.
max_partitions_per_insert_block
- 양의 정수입니다.
0— 파티션 수에 제한이 없습니다.
max_partitions_per_insert_block보다 많으면 ClickHouse는
throw_on_max_partitions_per_insert_block 설정에 따라 경고를 로그에 기록하거나
예외를 발생시킵니다. 예외 텍스트는 다음과 같습니다.
“단일 INSERT 블록의 파티션 수가 너무 많습니다 (partitions_count partitions, limit is ” + toString(max_partitions) + ”).
이 제한은 ‘max_partitions_per_insert_block’ 설정으로 제어됩니다.
많은 수의 파티션을 사용하는 것은 흔한 오해입니다. 이는 server 시작 지연,
INSERT 쿼리 지연, SELECT 쿼리 지연을 포함한 심각한 성능 저하를 초래합니다.
table의 권장 총 파티션 수는 1000..10000 미만입니다. 파티셔닝은 SELECT 쿼리 속도를 높이기 위한 것이 아니라는 점에 유의하십시오
(범위 쿼리를 빠르게 만드는 데는 ORDER BY key로 충분합니다).
파티션은 데이터 조작(DROP PARTITION 등)을 위한 것입니다.”
많은 수의 파티션을 사용하는 것은 흔한 오해이므로, 이 설정은 안전 임계값입니다.
max_partitions_to_read
- 양의 정수
-1- 무제한(기본값)
테이블 설정에서도 MergeTree 설정
max_partitions_to_read를 지정할 수 있습니다.max_parts_to_move
max_projection_rows_to_use_projection_index
max_query_size
max_query_size는 SQL 쿼리 내에서 설정할 수 없습니다(예: SELECT now() SETTINGS max_query_size=10000). ClickHouse는 쿼리를 파싱하기 위해 버퍼를 할당해야 하며, 이 버퍼의 크기는 max_query_size 설정에 따라 결정됩니다. 그리고 이 설정은 쿼리가 실행되기 전에 미리 구성되어 있어야 합니다.max_rand_distribution_parameter
randChiSquared, randStudentT, randFisherF와 같은 난수 분포 함수에서 분포 형상 매개변수의 최댓값입니다. 극단적인 매개변수 값으로 인해 계산 시간이 과도하게 길어지는 것을 방지합니다.
max_rand_distribution_trials
randBinomial 및 randNegativeBinomial과 같은 난수 분포 함수에 허용되는 최대 시행 횟수입니다. 시행 횟수가 매우 큰 경우 계산 시간이 지나치게 길어지는 것을 방지합니다.
max_read_buffer_size
max_read_buffer_size_local_fs
max_read_buffer_size_remote_fs
max_recursive_cte_evaluation_depth
max_remote_read_network_bandwidth
max_remote_write_network_bandwidth
max_replica_delay_for_distributed_queries
- 양의 정수.
- 0 — 레플리카 지연을 확인하지 않습니다.
SELECT를 수행할 때 사용됩니다.
max_result_bytes
max_result_rows
0.
결과의 행 수를 제한합니다. 이 제한은 서브쿼리에도 적용되며, 분산 쿼리의 일부를 실행할 때는 원격 서버에서도 검사됩니다.
값이 0이면 제한이 적용되지 않습니다.
임계값에 도달하면 쿼리는 데이터 블록 처리를 마친 후 중지되지만
결과의 마지막 블록은 잘라내지 않으므로 결과 크기가
임계값보다 클 수 있습니다.
max_reverse_dictionary_lookup_cache_size_bytes
dictGetKeys 함수에서 사용하는 쿼리별 역방향 딕셔너리 조회 캐시의 최대 크기(바이트)입니다. 이 캐시는 동일한 쿼리 내에서 딕셔너리를 다시 스캔하지 않도록 속성 값별로 직렬화된 키 튜플을 저장합니다. 제한에 도달하면 항목이 LRU 방식으로 제거됩니다. 캐시를 비활성화하려면 0으로 설정하십시오.
max_rows_for_lazy_final
max_rows_in_distinct
max_rows_in_join
join_overflow_mode 설정에서 선택하십시오.
가능한 값:
- 양의 정수
0— 행 수에 제한이 없습니다.
max_rows_in_set
max_rows_in_set_to_optimize_join
- 0 — 비활성화합니다.
- 임의의 양의 정수.
max_rows_to_group_by
throw이지만, 근사 GROUP BY 모드로
전환할 수도 있습니다.
max_rows_to_read
max_rows_to_read_leaf
max_rows_to_read=150 설정으로 두 테이블의 모든 데이터를 읽도록 한 분산 쿼리는 전체 행 수가 200행이므로 실패합니다. max_rows_to_read_leaf=150인 쿼리는 리프 노드가 최대 100행만 읽으므로 성공합니다.
이 제한은 처리되는 각 데이터 청크에 대해 검사됩니다.
이 설정은
prefer_localhost_replica=1과 함께 사용할 때 안정적이지 않습니다.max_rows_to_sort
sort_overflow_mode에 따라 결정되며, 기본값은 throw입니다.
max_rows_to_transfer
max_sessions_for_user
- 양의 정수
0- 동시 session 수 무제한(기본값)
max_size_to_preallocate_for_aggregation
max_size_to_preallocate_for_joins
skip_unavailable_shards가 활성화되면 별도 오류 없이 건너뛸 수 있는 세그먼트의 최대 개수를 제한합니다.
사용할 수 없는 세그먼트 수가 이 값을 초과하면 조용히 건너뛰는 대신 예외가 발생합니다.
값이 0이면 제한이 없음을 의미합니다(기본 동작으로, 사용할 수 없는 모든 세그먼트를 건너뛸 수 있습니다).
skip_unavailable_shards가 활성화되면, 오류 없이 건너뛸 수 있는 세그먼트 비율의 최댓값(0~1)을 제한합니다.
사용할 수 없는 세그먼트의 비율이 전체 세그먼트 대비 이 값을 초과하면, 조용히 건너뛰는 대신 예외가 발생합니다.
값이 0이면 제한이 없음을 의미합니다(기본 동작 — 사용할 수 없는 모든 세그먼트를 건너뛸 수 있습니다).
max_streams_for_files_processing_in_cluster_functions
max_streams_for_merge_tree_reading
max_streams_for_union_step
UNION 단계에서 동시에 활성화되는 데이터 스트림 수를 제한합니다(UNION DISTINCT는 UNION ALL 단계 다음에 DISTINCT 단계를 적용하는 방식으로 구현되므로 UNION ALL과 UNION DISTINCT 모두에 적용됩니다). UNION 쿼리에 서브쿼리가 많으면 모든 서브쿼리가 동시에 읽기 버퍼를 열어, 메모리 사용량이 서브쿼리 수에 비례하게 됩니다. 이 설정은 Concat 프로세서를 삽입해 파이프라인을 좁힘으로써, 한 번에 활성화되는 스트림 수가 최대 이 값까지만 되도록 하여 피크 메모리를 크게 줄입니다. 실제 제한값은 이 값과 max_threads * max_streams_for_union_step_to_max_threads_ratio 중 더 작은 값입니다(둘 중 하나가 0이면 해당 값은 무시됨). 둘 다 0이면 파이프라인 축소가 적용되지 않습니다.
max_streams_for_union_step_to_max_threads_ratio
max_threads를 곱한 값으로 UNION 단계에서 동시에 활성화할 수 있는 스트림 수의 제한이 결정됩니다(UNION ALL과 UNION DISTINCT 모두에 적용됨). 실제 제한은 이 계산값과 max_streams_for_union_step 중 더 작은 값입니다(둘 중 하나가 0이면 무시됨). 예를 들어 max_threads = 8이고 이 비율을 1로 설정하면 동시에 활성화되는 스트림은 최대 8개입니다. 이 비율 기반 제한을 비활성화하려면 0으로 설정하십시오.
max_streams_multiplier_for_merge_tables
max_streams_to_max_threads_ratio
max_subquery_depth
max_table_size_to_drop
0이면 아무런 제한 없이 모든 테이블을 삭제할 수 있습니다.
Cloud 기본값: 1 TB.
이 쿼리 설정은 해당 server 설정을 덮어씁니다. max_table_size_to_drop를 참조하십시오.
max_temporary_columns
0은 제한이 없음을 의미합니다.
max_temporary_data_on_disk_size_for_query
- 양의 정수
0— 무제한(기본값)
max_temporary_data_on_disk_size_for_user
- 양의 정수
0— 제한 없음(기본값)
max_temporary_non_const_columns
max_temporary_columns와 마찬가지로, 쿼리 실행 시 동시에 RAM에 유지해야 하는 임시 컬럼의 최대 개수입니다. 단, 상수 컬럼은 제외합니다.
상수 컬럼은 쿼리 실행 중 매우 자주 생성되지만, 계산 리소스를 거의 사용하지 않습니다.
max_threads
WHERE로 필터링하며, GROUP BY를 위한 사전 집계를 병렬로 수행할 수 있다면 ‘max_threads’가 사용됩니다.
LIMIT으로 인해 빠르게 완료되는 쿼리의 경우 더 낮은 ‘max_threads’를 설정할 수 있습니다.
예를 들어 필요한 수의 항목이 모든 블록에 포함되어 있고 max_threads = 8이면, 실제로는 블록 하나만 읽어도 충분하지만 8개의 블록을 가져오게 됩니다.
max_threads 값이 작을수록 메모리 사용량도 줄어듭니다.
기본적으로 max_threads 설정은 ClickHouse에서 사용할 수 있는 하드웨어 스레드 수(CPU 코어 수)와 일치합니다.
예외적으로, 32개 미만의 CPU 코어를 가진 x86 프로세서에서 SMT(예: Intel HyperThreading)를 사용하는 경우 ClickHouse는 기본적으로 논리 코어 수(= 물리 코어 수 x 2)를 사용합니다.
SMT(예: Intel HyperThreading)가 없는 경우에는 CPU 코어 수와 같습니다.
ClickHouse Cloud 사용자의 경우 기본값은 auto(N) 형식으로 표시되며, 여기서 N은 서비스의 vCPU 크기(예: 2vCPU/8GiB, 4vCPU/16GiB 등)와 일치합니다.
모든 서비스 크기 목록은 Cloud Console의 설정 탭에서 확인하십시오.
max_threads_for_indexes
max_threads_min_free_memory_per_thread
max_threads를 낮춰, 메모리 한도에 도달할 가능성이 높은 고병렬 쿼리가 시작되지 않도록 합니다.
여유 메모리는 서버의 max_server_memory_usage에서 전역 memory tracker가 현재 추적 중인 메모리 사용량을 뺀 값으로 계산됩니다. 이 여유 메모리가 max_threads에 이 값을 곱한 값보다 작으면, N * value <= free_memory를 만족하는 가장 큰 N이 되도록 max_threads가 줄어들며, 최솟값은 1입니다.
이 제한을 비활성화하려면 0으로 설정합니다.
예를 들어 기본값이 1 GiB이고 여유 메모리가 32 GiB이면 max_threads는 32로 제한됩니다. 여유 메모리가 1 GiB이면 1로 낮아집니다.
이 설정은 읽기 측 병렬 처리(SELECT, UNION, INTERSECT/EXCEPT, 그리고 INSERT ... SELECT의 SELECT 측)에 적용됩니다. 쓰기 측은 max_insert_threads_min_free_memory_per_thread를 참조하십시오.
max_untracked_memory
max_wkb_geometry_elements
readWKB 및 관련 함수가 파싱하는 동안 단일 WKB 지오메트리 요소에 허용되는 점, 링 또는 폴리곤의 최대 개수입니다. 이 설정은 잘못된 WKB 데이터로 인한 과도한 메모리 할당을 방지합니다. 하드코딩된 제한값(1억)을 사용하려면 0으로 설정하십시오.
memory_overcommit_ratio_denominator
memory_overcommit_ratio_denominator_for_user
memory_profiler_sample_max_allocation_size
memory_profiler_sample_probability와 동일한 확률로 무작위 수집합니다. 0은 비활성화를 의미합니다. 이 임계값이 예상대로 작동하게 하려면 max_untracked_memory를 0으로 설정하는 것이 좋습니다.
memory_profiler_sample_min_allocation_size
memory_profiler_sample_probability와 동일한 확률로 수집합니다. 0은 비활성화를 의미합니다. 이 임계값이 예상대로 작동하도록 하려면 ‘max_untracked_memory’를 0으로 설정하는 것이 좋습니다.
memory_profiler_sample_probability
trace_type으로 system.trace_log에 기록합니다. 이 확률은 할당 크기와 관계없이 각 alloc/free에 적용됩니다(memory_profiler_sample_min_allocation_size 및 memory_profiler_sample_max_allocation_size로 변경 가능). 샘플링은 추적되지 않은 메모리 양이 ‘max_untracked_memory’를 초과할 때만 수행됩니다. 더 세밀한 샘플링이 필요하면 ‘max_untracked_memory’를 0으로 설정하는 것이 좋습니다.
memory_profiler_step
- 바이트 수를 나타내는 양의 정수
- 메모리 프로파일러를 비활성화하려면 0
memory_tracker_fault_probability
exception safety 테스트를 위해, 지정된 확률에 따라 메모리를 할당할 때마다 예외를 발생시킵니다.
memory_usage_overcommit_max_wait_microseconds
merge_table_max_tables_to_look_for_schema_inference
Merge 테이블을 생성하거나 merge 테이블 함수를 사용할 때, 일치하는 테이블 중 지정된 개수를 넘지 않는 테이블들의 합집합을 기준으로 스키마를 자동 추론합니다.
테이블 수가 이보다 많으면 처음 지정된 개수의 테이블을 기준으로 스키마를 자동 추론합니다.
merge_tree_coarse_index_granularity
merge_tree_coarse_index_granularity개의 하위 범위로 나누고 그 안에서 필요한 키를 재귀적으로 검색합니다.
가능한 값:
- 임의의 양의 짝수 정수.
merge_tree_compact_parts_min_granules_to_multibuffer_read
merge_tree_determine_task_size_by_prewhere_columns
merge_tree_max_bytes_to_use_cache
merge_tree_max_bytes_to_use_cache바이트보다 많은 데이터를 읽어야 하는 경우, 압축 해제된 블록 캐시를 사용하지 않습니다.
압축 해제된 블록 캐시는 쿼리를 위해 추출한 데이터를 저장합니다. ClickHouse는 이 캐시를 사용해 반복되는 소규모 쿼리의 응답 속도를 높입니다. 이 설정은 많은 양의 데이터를 읽는 쿼리로 인해 캐시가 비효율적으로 소모되는 것을 방지합니다. uncompressed_cache_size 서버 설정은 압축 해제된 블록 캐시의 크기를 정의합니다.
가능한 값:
- 양의 정수.
merge_tree_max_rows_to_use_cache
merge_tree_max_rows_to_use_cache행보다 많은 데이터를 읽어야 하는 경우, 압축 해제된 블록 캐시를 사용하지 않습니다.
압축 해제된 블록 캐시는 쿼리를 위해 추출된 데이터를 저장합니다. ClickHouse는 이 캐시를 사용해 반복되는 소규모 쿼리의 응답 속도를 높입니다. 이 설정은 많은 양의 데이터를 읽는 쿼리로 인해 캐시가 비효율적으로 교체되는 것을 방지합니다. uncompressed_cache_size 서버 설정은 압축 해제된 블록 캐시의 크기를 정의합니다.
가능한 값:
- 임의의 양의 정수.
merge_tree_min_bytes_for_concurrent_read
merge_tree_min_bytes_for_concurrent_read를 초과하면, ClickHouse는 여러 스레드를 사용해 해당 파일을 동시에 읽으려고 시도합니다.
가능한 값:
- 양의 정수.
merge_tree_min_bytes_for_concurrent_read_for_remote_filesystem
- 양의 정수.
merge_tree_min_bytes_for_seek
merge_tree_min_bytes_for_seek 바이트보다 작으면, ClickHouse는 추가 seek이 발생하지 않도록 두 블록을 모두 포함하는 파일 범위를 순차적으로 읽습니다.
가능한 값:
- 임의의 양의 정수.
merge_tree_min_bytes_per_task_for_remote_reading
filesystem_prefetch_min_bytes_for_single_read_task
작업당 읽는 최소 바이트 수입니다.
merge_tree_min_read_task_size
merge_tree_min_rows_for_concurrent_read
merge_tree_min_rows_for_concurrent_read를 초과하면 ClickHouse는 여러 스레드를 사용해 해당 파일을 동시에 읽으려고 시도합니다.
가능한 값:
- 양의 정수.
merge_tree_min_rows_for_concurrent_read_for_remote_filesystem
- 양의 정수.
merge_tree_min_rows_for_seek
merge_tree_min_rows_for_seek행보다 작으면, ClickHouse는 파일 내에서 seek를 수행하지 않고 데이터를 순차적으로 읽습니다.
가능한 값:
- 임의의 양의 정수.
merge_tree_read_split_ranges_into_intersecting_and_non_intersecting_injection_probability
PartsSplitter 테스트용 - 지정된 확률에 따라 MergeTree에서 읽을 때마다 읽기 범위를 교차하는 범위와 교차하지 않는 범위로 분할합니다.
merge_tree_storage_snapshot_sleep_ms
- 0 - 지연 없음(기본값)
- N - 밀리초 단위 지연
merge_tree_use_const_size_tasks_for_remote_reading
merge_tree_use_deserialization_prefixes_cache
merge_tree_use_prefixes_deserialization_thread_pool
max_prefixes_deserialization_thread_pool_size로 제어됩니다.
merge_tree_use_v1_object_and_dynamic_serialization
metrics_perf_events_enabled
metrics_perf_events_list
min_bytes_to_use_direct_io
min_bytes_to_use_direct_io바이트를 초과하면 ClickHouse는 O_DIRECT 옵션을 사용해 스토리지 디스크에서 데이터를 읽습니다.
가능한 값:
- 0 — 직접 I/O가 비활성화됩니다.
- 양의 정수.
min_bytes_to_use_mmap_io
- 양의 정수
- 0 — 큰 파일을 커널에서 사용자 공간으로 데이터를 복사하는 방식으로만 읽습니다.
min_chunk_bytes_for_parallel_parsing
- 유형: 부호 없는 정수
- 기본값: 1 MiB
min_compress_block_size
min_compress_block_size 이상이면 해당 블록을 압축합니다. 기본값은 65,536입니다.
비압축 데이터가 max_compress_block_size보다 작으면, 실제 블록 크기는 이 값보다 작아지지 않으며, 하나의 마크에 해당하는 데이터 양보다도 작아지지 않습니다.
예시를 살펴보겠습니다. 테이블 생성 시 index_granularity를 8192로 설정했다고 가정합니다.
UInt32 유형의 컬럼(값당 4바이트)을 기록한다고 가정합니다. 8192개 행을 기록하면 총 데이터 크기는 32KB가 됩니다. min_compress_block_size = 65,536이므로 2개의 마크마다 압축 블록이 하나 생성됩니다.
String 유형의 URL 컬럼(값당 평균 크기 60바이트)을 기록한다고 가정합니다. 8192개 행을 기록하면 평균적으로 500KB보다 약간 작은 데이터가 됩니다. 이는 65,536보다 크므로 각 마크마다 압축 블록이 하나 생성됩니다. 이 경우 디스크에서 단일 마크 범위의 데이터를 읽을 때는 추가 데이터를 압축 해제하지 않습니다.
이 설정은 전문가 수준의 설정이므로, ClickHouse를 막 시작한 단계라면 변경하지 마십시오.
min_count_to_compile_aggregate_expression
- 양의 정수입니다.
- 0 — 동일한 집계 표현식은 항상 JIT 컴파일됩니다.
min_count_to_compile_expression
min_count_to_compile_sort_description
min_execution_speed
timeout_before_checking_execution_speed
시간이 지나면 검사합니다. 실행 속도가 이보다 낮으면 예외가 발생합니다.
min_execution_speed_bytes
timeout_before_checking_execution_speed
시간이 만료되면 모든 데이터 블록마다 확인합니다. 실행 속도가 이 값보다 낮으면 예외가 발생합니다.
min_external_table_block_size_bytes
min_external_table_block_size_rows
min_filtered_ratio_for_lazy_final
min_free_disk_bytes_to_perform_insert
min_free_disk_ratio_to_perform_insert
min_free_disk_space_for_temporary_data
min_hit_rate_to_use_consecutive_keys_optimization
min_insert_block_size_bytes
- 양의 정수입니다.
- 0 — 이 설정은 블록 형성에 사용되지 않습니다.
min_insert_block_size_bytes_for_materialized_views
INSERT 쿼리로 테이블에 삽입할 수 있는 블록의 최소 바이트 수를 설정합니다. 이보다 작은 블록은 더 큰 블록으로 합쳐집니다. 이 설정은 materialized view에 삽입되는 블록에만 적용됩니다. 이 값을 조정하면 materialized view로 푸시할 때 블록 합치기를 제어하여 과도한 메모리 사용을 방지할 수 있습니다.
가능한 값:
- 임의의 양의 정수입니다.
- 0 — 블록 합치기가 비활성화됩니다.
min_insert_block_size_rows
-
포맷 파싱: 서버가 모든 인터페이스(HTTP, 인라인 데이터가 포함된 clickhouse-client, gRPC, PostgreSQL wire 프로토콜)에서 행 기반 입력 형식(CSV, TSV, JSONEachRow 등)을 파싱할 때, 다음 조건에서 블록이 생성됩니다.
- min_insert_block_size_rows AND min_insert_block_size_bytes에 모두 도달한 경우, OR
- max_insert_block_size_rows OR max_insert_block_size_bytes 중 하나에 도달한 경우
-
INSERT 작업: INSERT 쿼리 실행 중이거나 데이터가 구체화된 뷰(Materialized View)를 통과할 때, 이 설정의 동작은
use_strict_insert_block_limits에 따라 달라집니다.-
활성화된 경우: 다음 조건에서 블록이 생성됩니다.
- 최소 임계값(AND): min_insert_block_size_rows AND min_insert_block_size_bytes에 모두 도달
- 최대 임계값(OR): max_insert_block_size_rows OR max_insert_block_size_bytes 중 하나에 도달
- 비활성화된 경우(기본값): min_insert_block_size_rows OR min_insert_block_size_bytes 중 하나에 도달하면 블록이 생성됩니다. max_insert_block_size 설정은 적용되지 않습니다.
-
활성화된 경우: 다음 조건에서 블록이 생성됩니다.
- 양의 정수입니다.
- 0 — 이 설정은 블록 형성에 사용되지 않습니다.
min_insert_block_size_rows_for_materialized_views
INSERT 쿼리로 테이블에 삽입할 수 있는 블록의 최소 행 수를 설정합니다. 이보다 작은 블록은 더 큰 블록으로 합쳐집니다. 이 설정은 materialized view에 삽입되는 블록에만 적용됩니다. 이 값을 조정하면 materialized view로 전달되는 블록의 병합을 제어하여 과도한 메모리 사용을 방지할 수 있습니다.
가능한 값:
- 임의의 양의 정수
- 0 — 블록 병합이 비활성화됩니다.
min_joined_block_size_bytes
min_joined_block_size_rows
min_os_cpu_wait_time_ratio_to_throw
OSCPUWaitMicroseconds 메트릭)과 CPU 사용 시간(OSCPUVirtualTimeMicroseconds 메트릭) 사이의 최소 비율입니다. 확률 계산에는 최소 비율과 최대 비율 사이의 선형 보간이 사용되며, 이 지점에서 확률은 0입니다.
min_outstreams_per_resize_after_split
Resize 또는 StrictResize processor의 출력 stream 최소 개수를 지정합니다. 분할 후 stream 개수가 이 값보다 작으면 분할 작업은 수행되지 않습니다.
Resize Node란 무엇인가
Resize 노드는 쿼리 파이프라인에서 흐르는 데이터 스트림 수를 조정하는 프로세서입니다. 여러 스레드나 프로세서에 워크로드를 고르게 분산할 수 있도록 스트림 수를 늘리거나 줄일 수 있습니다. 예를 들어, 쿼리에 더 높은 병렬성이 필요하면 Resize 노드는 단일 스트림을 여러 스트림으로 분할할 수 있습니다. 반대로 여러 스트림을 더 적은 수의 스트림으로 머지해 데이터 처리를 통합할 수도 있습니다.
Resize 노드는 데이터 블록의 구조를 유지하면서 데이터가 각 스트림에 고르게 분산되도록 합니다. 이를 통해 리소스 활용도를 최적화하고 쿼리 성능을 개선할 수 있습니다.
Resize Node를 분할해야 하는 이유
Resize 노드의 ExecutingGraph::Node::status_mutex에서 경합이 심하게 발생하며, 특히 코어 수가 많은 환경에서 더욱 두드러집니다. 이러한 경합은 다음과 같은 문제를 일으킵니다.
- ExecutingGraph::updateNode의 지연 시간이 증가하여 쿼리 성능에 직접적인 영향을 줍니다.
- 스핀락 경합(native_queued_spin_lock_slowpath)으로 인해 과도한 CPU 사이클이 낭비되어 효율이 저하됩니다.
- CPU 활용률이 낮아져 병렬성과 처리량이 제한됩니다.
Resize 노드가 분할되는 방식
- 분할이 가능한지 확인하기 위해 출력 스트림 수를 검사합니다. 즉, 분할된 각 processor의 출력 스트림 수가
min_outstreams_per_resize_after_split임계값 이상이어야 합니다. Resize노드는 더 작은Resize노드들로 분할되며, 각 노드는 동일한 수의 포트를 갖고 입력 및 출력 스트림의 부분 집합을 처리합니다.- 각 그룹은 독립적으로 처리되므로 lock 경합이 줄어듭니다.
임의의 입력/출력을 사용하는 Resize 노드 분할
Resize 노드 수로 균등하게 나눌 수 없으면, 일부 입력은 NullSource에 연결되고 일부 출력은 NullSink에 연결됩니다. 이렇게 하면 전체 데이터 흐름에 영향을 주지 않고 분할할 수 있습니다.
설정의 목적
min_outstreams_per_resize_after_split 설정은 Resize 노드 분할이 실질적인 효과를 내도록 하고, 병렬 처리 효율을 떨어뜨릴 수 있는 지나치게 적은 수의 스트림이 생성되는 것을 방지합니다. 이 설정은 최소 출력 스트림 수를 강제하여, 스트림 분할 및 병합이 포함된 시나리오에서 병렬성과 오버헤드 간의 균형을 유지하고 쿼리 실행을 최적화하는 데 도움이 됩니다.
설정 비활성화
Resize 노드의 split을 비활성화하려면 이 설정 값을 0으로 지정하십시오. 그러면 pipeline 생성 중 Resize 노드가 분할되지 않아 더 작은 노드로 나뉘지 않고 원래 구조를 유지합니다.
min_table_rows_to_use_projection_index
mongodb_throw_on_unsupported_query
move_all_conditions_to_prewhere
move_primary_key_columns_to_end_of_prewhere
multiple_joins_try_to_keep_original_names
mutations_execute_nondeterministic_on_initiator
true이면 상수 비결정적 함수(예: now() 함수)는 initiator에서 실행되고, UPDATE 및 DELETE 쿼리에서는 리터럴로 대체됩니다. 이렇게 하면 상수 비결정적 함수를 사용하는 뮤테이션을 실행하는 동안 레플리카 간 데이터 동기화를 유지하는 데 도움이 됩니다. 기본값: false.
mutations_execute_subqueries_on_initiator
true이면 스칼라 서브쿼리가 initiator에서 실행되며 UPDATE 및 DELETE 쿼리에서는 리터럴로 대체됩니다. 기본값은 false입니다.
mutations_max_literal_size_to_replace
UPDATE 및 DELETE 쿼리에서 대체할 직렬화된 리터럴의 최대 크기(바이트 단위)입니다. 위의 두 설정 중 하나 이상이 활성화된 경우에만 이 설정이 적용됩니다. 기본값: 16384 (16 KiB).
mutations_sync
ALTER TABLE ... UPDATE|DELETE|MATERIALIZE INDEX|MATERIALIZE PROJECTION|MATERIALIZE COLUMN|MATERIALIZE STATISTICS 쿼리(mutations)를 동기적으로 실행할 수 있습니다.
가능한 값:
| 값 | 설명 |
|---|---|
0 | 뮤테이션이 비동기적으로 실행됩니다. |
1 | 현재 서버에서 모든 뮤테이션이 완료될 때까지 쿼리가 대기합니다. |
2 | 모든 레플리카(있는 경우)에서 모든 뮤테이션이 완료될 때까지 쿼리가 대기합니다. |
3 | 활성 레플리카에 대해서만 쿼리가 대기합니다. SharedMergeTree에서만 지원됩니다. ReplicatedMergeTree에서는 mutations_sync = 2와 동일하게 동작합니다. |
mysql_datatypes_support_level
decimal, datetime64, date2Date32, date2String을 임의로 조합한 쉼표로 구분된 목록입니다. 최신 매핑(decimal, datetime64, date2Date32)은 모두 기본적으로 활성화되어 있습니다.
decimal: 정밀도가 허용되면NUMERIC및DECIMAL타입을Decimal로 변환합니다.datetime64: 정밀도가0이 아니면DATETIME및TIMESTAMP타입을DateTime대신DateTime64로 변환합니다.date2Date32:DATE를Date대신Date32로 변환합니다.date2String보다 우선 적용됩니다.date2String:DATE를Date대신String으로 변환합니다.datetime64가 설정되면 이 옵션은 무시됩니다.
mysql_map_fixed_string_to_text_in_show_columns
TEXT로 표시됩니다.
MySQL wire 프로토콜을 통해 연결한 경우에만 적용됩니다.
- 0 -
BLOB를 사용합니다. - 1 -
TEXT를 사용합니다.
mysql_map_string_to_text_in_show_columns
TEXT로 표시됩니다.
MySQL wire protocol을 통해 연결된 경우에만 적용됩니다.
- 0 -
BLOB를 사용합니다. - 1 -
TEXT를 사용합니다.
mysql_max_rows_to_insert
network_compression_method
NONE— 압축을 사용하지 않습니다.LZ4— LZ4 코덱을 사용합니다.LZ4HC— LZ4HC 코덱을 사용합니다.ZSTD— ZSTD 코덱을 사용합니다.
network_zstd_compression_level
ZSTD로 설정된 경우에만 적용됩니다.
가능한 값:
- 1~15의 양의 정수.
normalize_function_names
number_of_mutations_to_delay
number_of_mutations_to_throw
odbc_bridge_connection_pool_size
odbc_bridge_use_connection_pooling
offset
- 0 — 건너뛸 행이 없습니다.
- 양의 정수.
opentelemetry_start_keeper_trace_probability
- ‘auto’ - opentelemetry_start_trace_probability 설정과 같습니다
- 0 — tracing이 비활성화됩니다
- 0 to 1 — 확률(예: 1.0 = 항상 활성화)
opentelemetry_start_trace_probability
- 0 — 실행된 모든 쿨리에 대한 추적이 비활성화됩니다(상위 추적 컨텍스트가 제공되지 않은 경우).
- [0..1] 범위의 양의 부동소수점 수입니다. 예를 들어 설정 값이
0,5이면 ClickHouse는 평균적으로 쿼리의 절반에서 추적을 시작할 수 있습니다. - 1 — 실행된 모든 쿼리에 대한 추적이 활성화됩니다.
opentelemetry_trace_cpu_scheduling
opentelemetry_trace_processors
optimize_aggregation_in_order
- 0 —
GROUP BY최적화가 비활성화됩니다. - 1 —
GROUP BY최적화가 활성화됩니다.
optimize_aggregators_of_group_by_keys
optimize_and_compare_chain
<, <=, >, >=, = 연산자와 이들의 혼합을 지원합니다. 예를 들어 (a < b) AND (b < c) AND (c < 5)는 (a < b) AND (b < c) AND (c < 5) AND (b < 5) AND (a < 5)가 됩니다.
optimize_append_index
false입니다.
가능한 값:
- true, false
optimize_arithmetic_operations_in_aggregate_functions
optimize_const_name_size
- 양의 정수 - 이름의 최대 길이
- 0 — 항상
- 음의 정수 - 사용하지 않음
optimize_count_from_files
file/s3/url/hdfs/azureBlobStorage에 적용됩니다.
가능한 값:
- 0 — 최적화가 비활성화됩니다.
- 1 — 최적화가 활성화됩니다.
optimize_dictget_tuple_element
tupleElement(dictGet('dict', ('a', 'b', 'c'), key), 2)를 dictGet('dict', 'b', key)로 재작성합니다. 위치 기반(.1, .2, …) 및 이름 기반(.b) 접근을 지원하며, 기본 인수가 상수 튜플 또는 상수로 구성된 tuple(...)인 경우 dictGetOrDefault에도 적용됩니다.
optimize_distinct_in_order
optimize_distributed_group_by_sharding_key
GROUP BY sharding_key 쿼리를 최적화합니다(이에 따라 initiator server에서 해당 쿼리의 메모리 사용량이 줄어듭니다).
다음 유형의 쿼리가 지원됩니다(이들의 모든 조합도 포함):
SELECT DISTINCT [..., ]sharding_key[, ...] FROM distSELECT ... FROM dist GROUP BY sharding_key[, ...]SELECT ... FROM dist GROUP BY sharding_key[, ...] ORDER BY xSELECT ... FROM dist GROUP BY sharding_key[, ...] LIMIT 1SELECT ... FROM dist GROUP BY sharding_key[, ...] LIMIT 1 BY x
SELECT ... GROUP BY sharding_key[, ...] WITH TOTALSSELECT ... GROUP BY sharding_key[, ...] WITH ROLLUPSELECT ... GROUP BY sharding_key[, ...] WITH CUBESELECT ... GROUP BY sharding_key[, ...] SETTINGS extremes=1
- 0 — 비활성화.
- 1 — 활성화.
현재는
optimize_skip_unused_shards가 필요합니다. 이는 향후 기본적으로 활성화될 수 있기 때문이며, 이 경우 데이터가 분산 테이블(Distributed table)을 통해 삽입되어 sharding_key에 따라 분산된 경우에만 올바르게 동작합니다.optimize_dry_run_check_part
OPTIMIZE ... DRY RUN은 checkDataPart를 사용해 최종적으로 병합된 파트를 검증합니다. 검증에 실패하면 예외가 발생합니다.
optimize_empty_string_comparisons
col = '' 또는 '' = col 같은 표현식을 empty(col)로, col != '' 또는 '' != col 같은 표현식을 notEmpty(col)로 변환합니다.
이 동작은 col이 String 또는 FixedString 타입인 경우에만 적용됩니다.
optimize_extract_common_expressions
(A AND B) OR (A AND C)와 같은 논리 표현식은 A AND (B OR C)로 다시 작성할 수 있으며, 다음 최적화에 도움이 될 수 있습니다:
- 단순 필터링 표현식에서 인덱스 활용
- cross를 inner join으로 최적화
optimize_functions_to_subcolumns
- length를 size0 서브컬럼을 읽는 방식으로 변환합니다.
- empty를 size0 서브컬럼을 읽는 방식으로 변환합니다.
- notEmpty를 size0 서브컬럼을 읽는 방식으로 변환합니다.
- isNull을 null 서브컬럼을 읽는 방식으로 변환합니다.
- isNotNull을 null 서브컬럼을 읽는 방식으로 변환합니다.
- count를 null 서브컬럼을 읽는 방식으로 변환합니다.
- mapKeys를 keys 서브컬럼을 읽는 방식으로 변환합니다.
- mapValues를 values 서브컬럼을 읽는 방식으로 변환합니다.
- 0 — 최적화가 비활성화됩니다.
- 1 — 최적화가 활성화됩니다.
optimize_group_by_constant_keys
optimize_group_by_function_keys
optimize_if_chain_to_multiif
optimize_if_transform_strings_to_enum
optimize_injective_functions_in_group_by
optimize_injective_functions_inside_uniq
optimize_inverse_dictionary_lookup
optimize_min_equality_disjunction_chain_length
expr = x1 OR ... expr = xN에 최적화가 적용되기 위한 최소 길이
optimize_min_inequality_conjunction_chain_length
expr <> x1 AND ... expr <> xN의 최소 길이
optimize_move_to_prewhere
- 0 —
PREWHERE자동 최적화가 비활성화됩니다. - 1 —
PREWHERE자동 최적화가 활성화됩니다.
optimize_move_to_prewhere_if_final
- 0 —
FINAL수정자가 있는SELECT쿼리에서PREWHERE자동 최적화가 비활성화됩니다. - 1 —
FINAL수정자가 있는SELECT쿼리에서PREWHERE자동 최적화가 활성화됩니다.
optimize_multiif_to_if
optimize_normalize_count_variants
optimize_on_insert
- 0 — 비활성화됨.
- 1 — 활성화됨.
optimize_or_like_chain
optimize_qbit_distance_function_reads
QBit 데이터 타입의 거리 함수를, 저장소에서 계산에 필요한 컬럼만 읽는 동등한 함수로 대체합니다.
optimize_read_in_order
- 0 —
ORDER BY최적화가 비활성화됩니다. - 1 —
ORDER BY최적화가 활성화됩니다.
optimize_redundant_functions_in_order_by
optimize_respect_aliases
optimize_rewrite_aggregate_function_with_if
if 표현식을 사용하는 집계 함수를 재작성합니다.
예를 들어 avg(if(cond, col, null))는 avgOrNullIf(cond, col)로 재작성할 수 있습니다. 성능 향상에 도움이 될 수 있습니다.
분석기(
enable_analyzer = 1)를 사용할 때만 지원됩니다.optimize_rewrite_array_exists_to_has
optimize_rewrite_like_perfect_affix
col LIKE 'ClickHouse%')을 startsWith 또는 endsWith 함수(예: startsWith(col, 'ClickHouse'))로 재작성합니다.
optimize_rewrite_regexp_functions
optimize_rewrite_sum_if_to_count_if
optimize_skip_merged_partitions
OPTIMIZE TABLE ... FINAL SETTINGS optimize_skip_merged_partitions=1
OPTIMIZE TABLE ... FINAL 쿼리는 part가 하나만 있는 경우에도 해당 part를 재작성합니다.
Possible values:
- 1 - 최적화를 활성화합니다.
- 0 - 최적화를 비활성화합니다.
optimize_skip_unused_shards
WHERE/PREWHERE에 세그먼트 분할 키 조건이 있는 SELECT 쿼리에서 사용되지 않는 세그먼트를 스키핑할지 여부를 설정하며, 분산 쿼리 관련 최적화(예: 세그먼트 분할 키 기준 집계)도 활성화합니다.
데이터가 세그먼트 분할 키를 기준으로 분산되어 있다고 가정합니다. 그렇지 않으면 쿼리 결과가 올바르지 않을 수 있습니다.
- 0 — 비활성화됨.
- 1 — 활성화됨.
optimize_skip_unused_shards_limit
optimize_skip_unused_shards가 비활성화됩니다.
값이 너무 많으면 처리에 상당한 비용이 들 수 있으며, 얻을 수 있는 이점도 크지 않습니다. IN (...)에 값이 매우 많이 포함되어 있으면, 쿼리는 어차피 모든 세그먼트로 전송될 가능성이 높기 때문입니다.
optimize_skip_unused_shards_nesting
optimize_skip_unused_shards의 동작을 제어합니다. 따라서 이 설정을 사용하려면 optimize_skip_unused_shards도 여전히 필요합니다. 이는 Distributed 테이블이 다른 Distributed 테이블을 조회하는 경우에 해당합니다.
가능한 값:
- 0 — 비활성화됩니다.
optimize_skip_unused_shards가 항상 동작합니다. - 1 — 첫 번째 수준에서만
optimize_skip_unused_shards를 활성화합니다. - 2 — 두 번째 수준까지
optimize_skip_unused_shards를 활성화합니다.
optimize_skip_unused_shards_rewrite_in
- 0 — 비활성화됨.
- 1 — 활성화됨.
optimize_sorting_by_input_stream_properties
optimize_substitute_columns
false입니다.
가능한 값:
- true, false
optimize_syntax_fuse_functions
- 0 — 동일한 인수를 사용하는 함수는 결합되지 않습니다.
- 1 — 동일한 인수를 사용하는 함수는 결합됩니다.
optimize_throw_if_noop
OPTIMIZE는 아무 작업도 수행하지 않았더라도 성공으로 반환됩니다. 이 설정을 사용하면 이러한 상황을 구분하고 예외 메시지를 통해 원인을 확인할 수 있습니다.
가능한 값:
- 1 — 예외 발생이 활성화됩니다.
- 0 — 예외 발생이 비활성화됩니다.
optimize_time_filter_with_preimage
toYear(col) = 2023 -> col >= '2023-01-01' AND col <= '2023-12-31')
optimize_trivial_approximate_count_query
- 0 — 최적화가 비활성화됩니다.
- 1 — 최적화가 활성화됩니다.
optimize_trivial_count_query
SELECT count() FROM table를 최적화할지 여부를 설정합니다. 행 수준 보안을 사용해야 한다면 이 설정을 비활성화하십시오.
가능한 값:
- 0 — 최적화 비활성화.
- 1 — 최적화 활성화.
optimize_trivial_group_by_limit_query
max_rows_to_group_by = n + offset 및 group_by_overflow_mode = 'any'를 설정해 단순 쿼리 SELECT key_expr FROM table GROUP BY key_expr LIMIT n(SELECT 목록에 집계 함수가 없고, HAVING/ORDER BY/LIMIT BY/윈도우 절이 없으며, GROUP BY 수정자도 없는 경우)의 최적화를 활성화하거나 비활성화합니다. n + offset개의 고유 키가 생성되면 집계가 중지됩니다.
사용자가 group_by_overflow_mode를 any가 아닌 값으로 명시적으로 설정한 경우(명시적으로 지정한 throw/break 동작을 보존하기 위해), 또는 이미 더 엄격한 max_rows_to_group_by를 설정한 경우(이 최적화가 아무 효과가 없으므로)에는 이 최적화가 적용되지 않습니다.
가능한 값:
- 0 — 최적화 비활성화.
- 1 — 최적화 활성화.
optimize_trivial_insert_select
optimize_truncate_order_by_after_group_by_keys
optimize_uniq_to_count
optimize_use_implicit_projections
optimize_use_projection_filtering
optimize_use_projections
allow_experimental_projection_optimization
SELECT 쿼리 처리 시 프로젝션 최적화를 활성화할지 여부를 설정합니다.
가능한 값:
- 0 — 프로젝션 최적화가 비활성화됩니다.
- 1 — 프로젝션 최적화가 활성화됩니다.
optimize_using_constraints
false입니다.
가능한 값:
- true, false
os_threads_nice_value_materialized_view
os_threads_nice_value_query
os_thread_priority
쿼리 처리 스레드의 Linux nice 값입니다. 값이 낮을수록 CPU 우선순위가 높습니다.
CAP_SYS_NICE capability가 필요하며, 없으면 동작하지 않습니다.
가능한 값: -20~19입니다.
page_cache_block_size
page_cache_inject_eviction
page_cache_lookahead_blocks
page_cache_max_coalesced_bytes
readBigAt가 사용자 공간 페이지 캐시를 채울 때는 연속된 캐시 미스를 기반 스토리지에서 수행하는 하나의 읽기로 병합합니다. 이 설정은 병합 읽기 1회의 크기를 바이트 단위로 제한하며, 더 긴 미스 구간은 여러 번의 읽기로 나뉩니다. 병렬 콜드 읽기 중 임시 버퍼의 일시적인 메모리 사용량을 제한합니다.
값이 클수록 객체 스토리지에서 콜드 스캔을 수행할 때 HTTP 요청 수가 줄어들고, 값이 작을수록 일시적인 최대 메모리 사용량이 줄어듭니다.
paimon_target_snapshot_id
parallel_distributed_insert_select
INSERT ... SELECT 쿼리를 활성화합니다.
INSERT INTO distributed_table_a SELECT ... FROM distributed_table_b 쿼리를 실행할 때 두 테이블이 동일한 클러스터를 사용하고, 두 테이블이 모두 복제된 테이블이거나 비복제 테이블이면, 이 쿼리는 각 세그먼트에서 로컬로 처리됩니다.
가능한 값:
0— 비활성화됩니다.1—SELECT는 Distributed 엔진의 기반 테이블(underlying table)에서 각 세그먼트별로 실행됩니다.2—SELECT와INSERT는 Distributed 엔진의 기반 테이블(underlying table)에서 각 세그먼트별로 실행됩니다.
ReplicatedMergeTree 또는 SharedMergeTree 소스의 INSERT ... SELECT도 여러 레플리카에 걸쳐 병렬화할 수 있습니다. 이를 활성화하려면 다음을 설정하십시오:
parallel_distributed_insert_select = 2enable_parallel_replicas = 1
parallel_hash_join_threshold
hash와 parallel_hash 중 어떤 것을 사용할지 결정하는 데 도움이 됩니다(오른쪽 테이블 크기를 추정할 수 있는 경우에만 해당).
오른쪽 테이블의 크기가 임계값보다 작다는 것을 알고 있으면 전자를 사용합니다.
parallel_non_joined_rows_processing
parallel_hash 조인 알고리즘을 사용할 때 조인되지 않은 행 처리 단계의 속도를 높일 수 있습니다.
비활성화하면 조인되지 않은 행은 단일 스레드로 처리됩니다.
parallel_replica_offset
parallel_replicas_allow_in_with_subquery
parallel_replicas_allow_materialized_views
parallel_replicas_allow_view_over_mergetree
MergeTree 테이블 기반 단순 뷰에서 병렬 레플리카가 뷰의 내부 쿼리 대신 외부 쿼리를 실행할 수 있도록 하여, 노드 간 병렬화를 개선합니다. 모든 분기가 서로 다른 MergeTree 테이블을 읽는 UNION ALL 뷰에도 적용됩니다.
parallel_replicas_connect_timeout_ms
parallel_replicas_count
parallel_replicas_custom_key
SAMPLE 키와 동일하게 동작하여, 각 세그먼트의 여러 레플리카를 사용합니다.
parallel_replicas_custom_key_range_lower
range가 사용자 지정 범위 [parallel_replicas_custom_key_range_lower, INT_MAX]를 기준으로 작업을 레플리카 간에 균등하게 분할할 수 있도록 합니다.
parallel_replicas_custom_key_range_upper와 함께 사용하면 필터가 범위 [parallel_replicas_custom_key_range_lower, parallel_replicas_custom_key_range_upper]에서 작업을 레플리카 간에 균등하게 분할할 수 있습니다.
참고: 이 설정은 쿼리 처리 중 추가 데이터를 필터링하지 않습니다. 대신 병렬 처리를 위해 범위 필터가 [0, INT_MAX] 범위를 분할하는 지점을 변경합니다.
parallel_replicas_custom_key_range_upper
range가 사용자 지정 범위 [0, parallel_replicas_custom_key_range_upper]를 기준으로 작업을 레플리카 간에 균등하게 분할할 수 있도록 합니다. 값이 0이면 상한이 비활성화되며, 이 경우 사용자 지정 키 표현식의 최댓값이 사용됩니다.
parallel_replicas_custom_key_range_lower와 함께 사용하면 필터가 범위 [parallel_replicas_custom_key_range_lower, parallel_replicas_custom_key_range_upper]에서 작업을 레플리카 간에 균등하게 분할할 수 있습니다.
참고: 이 설정으로 인해 쿼리 처리 중 추가 데이터가 필터링되지는 않습니다. 대신 병렬 처리를 위해 범위 필터가 [0, INT_MAX] 범위를 나누는 지점만 변경됩니다.
parallel_replicas_filter_pushdown
parallel_replicas_for_cluster_engines
-Cluster 대안으로 대체합니다
parallel_replicas_for_non_replicated_merge_tree
parallel_replicas_index_analysis_only_on_coordinator
parallel_replicas_insert_select_local_pipeline
parallel_replicas_local_plan
parallel_replicas_mark_segment_size
parallel_replicas_min_number_of_rows_per_replica
parallel_replicas_mode
parallel_replicas_only_with_analyzer
parallel_replicas_prefer_local_join
parallel_replicas_prefer_local_replica
max_parallel_replicas = 1인 쿼리를 다른 호스트로 라우팅할 수 있으므로, 클러스터 전반에 많은 짧은 쿼리가 분산되는 경우 캐시 지역성이 향상될 수 있습니다.
parallel_replicas_support_projection
parallel_view_processing
parallelize_output_from_storages
parsedatetime_e_requires_space_padding
parseDateTime 함수의 Formatter ‘%e’는 한 자릿수 날짜가 공백으로 패딩되어 있어야 합니다. 예를 들어 ’ 2’는 허용되지만 ‘2’는 오류를 발생시킵니다.
parsedatetime_parse_without_leading_zeros
parseDateTime에서 포매터 ‘%c’, ‘%l’, ‘%k’는 앞의 0 없이 월과 시간을 파싱합니다.
partial_merge_join_left_table_buffer_bytes
partial_merge_join_rows_in_right_blocks
- 오른쪽 조인 데이터를 지정된 행 수 이하의 블록으로 분할합니다.
- 각 블록에 최소값과 최대값을 기준으로 인덱스를 생성합니다.
- 가능하면 준비된 블록을 디스크로 언로드합니다.
- 양의 정수라면 모두 가능합니다. 권장 범위는 [1000, 100000]입니다.
partial_result_on_first_cancel
parts_to_delay_insert
parts_to_throw_insert
per_part_index_stats
poll_interval
polyglot_dialect
postgresql_connection_attempt_timeout
connect_timeout 매개변수로 전달됩니다.
postgresql_connection_pool_auto_close_connection
postgresql_connection_pool_retries
postgresql_connection_pool_size
postgresql_connection_pool_wait_timeout
postgresql_fault_injection_probability
predicate_statistics_sample_rate
system.predicate_statistics_log에 수집합니다. N > 0으로 설정하면 쿼리 ID를 기준으로 전체 쿼리의 약 1/N이 샘플링됩니다. 0은 비활성화를 의미합니다.
prefer_column_name_to_alias
- 0 — 컬럼 이름이 별칭으로 대체됩니다.
- 1 — 컬럼 이름이 별칭으로 대체되지 않습니다.
prefer_external_sort_block_bytes
prefer_global_in_and_join
IN/JOIN 연산자를 GLOBAL IN/GLOBAL JOIN으로 대체할 수 있도록 합니다.
가능한 값:
- 0 — 비활성화됨.
IN/JOIN연산자가GLOBAL IN/GLOBAL JOIN으로 대체되지 않습니다. - 1 — 활성화됨.
IN/JOIN연산자가GLOBAL IN/GLOBAL JOIN으로 대체됩니다.
SET distributed_product_mode=global은 분산 테이블의 쿼리 동작을 변경할 수 있지만, 로컬 테이블이나 외부 리소스의 테이블에는 적합하지 않습니다. 이런 경우 prefer_global_in_and_join 설정이 유용합니다.
예를 들어, 분산에 적합하지 않은 로컬 테이블을 포함한 쿼리 처리 노드가 있다고 가정해 보겠습니다. 이런 경우 GLOBAL 키워드(GLOBAL IN/GLOBAL JOIN)를 사용해 분산 처리 중에 해당 데이터를 즉시 분산시켜야 합니다.
prefer_global_in_and_join의 또 다른 사용 사례는 외부 엔진으로 생성된 테이블에 액세스하는 경우입니다. 이 설정을 사용하면 이러한 테이블을 조인할 때 외부 소스 호출 횟수를 줄일 수 있으며, 쿼리당 한 번만 호출하면 됩니다.
관련 항목:
GLOBAL IN/GLOBAL JOIN사용 방법에 대한 자세한 내용은 분산 서브쿼리를 참조하십시오.
prefer_localhost_replica
- 1 — localhost 레플리카가 있으면 ClickHouse는 항상 해당 레플리카로 쿼리를 보냅니다.
- 0 — ClickHouse는 load_balancing 설정에 지정된 밸런싱 전략을 사용합니다.
parallel_replicas_custom_key 없이 max_parallel_replicas를 사용하는 경우 이 설정을 비활성화하십시오.
parallel_replicas_custom_key가 설정된 경우에는 여러 세그먼트에 여러 레플리카가 포함된 클러스터에서 사용할 때만 이 설정을 비활성화하십시오.
단일 세그먼트와 여러 레플리카가 있는 클러스터에서 사용하는 경우 이 설정을 비활성화하면 부정적인 영향이 있습니다.
prefer_warmed_unmerged_parts_seconds
preferred_block_size_bytes
max_block_size 설정을 추가로 세밀하게 조정하는 데 사용됩니다. 컬럼이 크고 max_block_size 행을 기준으로 할 때 블록 크기가 지정된 바이트 수를 초과할 가능성이 있으면, CPU 캐시 지역성을 높이기 위해 블록 크기를 줄입니다.
preferred_max_column_in_block_size_bytes
preferred_optimize_projection_name
- string: 선호하는 프로젝션의 이름
prefetch_buffer_size
print_pretty_type_names
DESCRIBE 쿼리와 toTypeName() 함수에서 깊게 중첩된 타입 이름을 들여쓰기로 가독성 좋게 출력할 수 있습니다.
예시:
priority
promql_database
promql_evaluation_time
evaluation_time
promql 방언에서 사용할 평가 시간을 설정합니다. ‘auto’는 현재 시간을 의미합니다.
promql_table
push_external_roles_in_interserver_queries
query_cache_compress_entries
- 0 - 비활성화
- 1 - 활성화
query_cache_for_subqueries
use_query_cache가 모든 서브쿼리에 전파됩니다.
가능한 값:
- 0 - 비활성화
- 1 - 활성화
query_cache_max_entries
- 0 이상의 정수.
query_cache_max_size_in_bytes
- 0 이상인 정수.
query_cache_min_query_duration
- 0 이상인 정수.
query_cache_min_query_runs
SELECT 쿼리가 최소 몇 번 실행되어야 하는지를 지정합니다.
가능한 값:
- 0 이상의 정수.
query_cache_nondeterministic_function_handling
rand() 또는 now()와 같은 비결정적 함수가 포함된 SELECT 쿼리를 처리하는 방식을 제어합니다.
Possible values:
'throw'- 예외를 발생시키고 쿼리 결과를 캐시하지 않습니다.'save'- 쿼리 결과를 캐시합니다.'ignore'- 쿼리 결과를 캐시하지 않으며 예외도 발생시키지 않습니다.
SELECT 쿼리 결과를 다른 사용자도 읽을 수 있습니다.
보안상의 이유로 이 설정은 활성화하지 않는 것이 좋습니다.
Possible values:
- 0 - 비활성화됨
- 1 - 활성화됨
query_cache_squash_partial_results
- 0 - 비활성화
- 1 - 활성화
query_cache_system_table_handling
system.* 및 information_schema.* 데이터베이스의 테이블에 대한 SELECT 쿼리를 어떻게 처리할지 제어합니다.
가능한 값:
'throw'- 예외를 발생시키고 쿼리 결과를 캐시하지 않습니다.'save'- 쿼리 결과를 캐시합니다.'ignore'- 쿼리 결과를 캐시하지 않으며 예외도 발생시키지 않습니다.
query_cache_tag
- 임의의 문자열
query_cache_ttl
- 0 이상의 정수.
query_metric_log_interval
collect_interval_milliseconds 값을 사용하고, 해당 값이 없으면 기본값인 1000을 사용합니다.
단일 쿼리에 대한 수집을 비활성화하려면 query_metric_log_interval을 0으로 설정하십시오.
기본값: -1
query_plan_aggregation_in_order
query_plan_enable_optimizations이 1인 경우에만 적용됩니다.
이 설정은 전문가 수준의 설정으로, 개발자가 디버깅할 때만 사용해야 합니다. 이 설정은 향후 하위 호환되지 않는 방식으로 변경되거나 제거될 수 있습니다.
- 0 - 비활성화
- 1 - 활성화
query_plan_convert_any_join_to_semi_or_anti_join
query_plan_convert_join_to_in
JOIN을 IN을 사용하는 서브쿼리로 변환하도록 허용합니다. ANY가 아닌 JOIN(예: 기본값인 ALL JOIN)에서는 잘못된 결과가 발생할 수 있습니다.
query_plan_convert_outer_join_to_inner_join
JOIN 이후의 필터가 항상 기본값을 제외하는 경우 OUTER JOIN을 INNER JOIN으로 변환할 수 있도록 허용합니다
query_plan_direct_read_from_text_index
query_plan_display_internal_aliases
query_plan_enable_multithreading_after_window_functions
query_plan_enable_optimizations
이 설정은 개발자가 디버깅할 때만 사용해야 하는 전문가용 설정입니다. 향후 하위 호환되지 않는 방식으로 변경되거나 제거될 수 있습니다.
- 0 - 쿼리 계획 수준의 모든 최적화를 비활성화합니다
- 1 - 쿼리 계획 수준의 최적화를 활성화합니다(단, 개별 최적화는 각 설정을 통해 여전히 비활성화할 수 있습니다)
query_plan_execute_functions_after_sorting
query_plan_enable_optimizations의 값이 1일 때만 적용됩니다.
이 설정은 개발자가 디버깅할 때만 사용해야 하는 전문가 수준의 설정입니다. 이 설정은 향후 하위 호환되지 않는 방식으로 변경되거나 제거될 수 있습니다.
- 0 - 비활성화
- 1 - 활성화
query_plan_filter_push_down
이 설정은 개발자가 디버깅할 때만 사용해야 하는 전문가 수준의 설정입니다. 향후 하위 호환되지 않는 방식으로 변경되거나 제거될 수 있습니다.
- 0 - 비활성화
- 1 - 활성화
query_plan_join_shard_by_pk_ranges
query_plan_join_swap_table
JOIN ON 절을 사용하는 ALL 조인 엄격성에서만 지원됩니다. 가능한 값은 다음과 같습니다:
- ‘auto’: 플래너가 빌드 테이블로 사용할 테이블을 결정합니다.
- ‘false’: 테이블을 스왑하지 않습니다(오른쪽 테이블이 빌드 테이블입니다).
- ‘true’: 항상 테이블을 스왑합니다(왼쪽 테이블이 빌드 테이블입니다).
query_plan_lift_up_array_join
이 설정은 개발자가 디버깅할 때만 사용해야 하는 전문가 수준의 설정입니다. 이 설정은 향후 하위 호환되지 않는 방식으로 변경되거나 제거될 수 있습니다.
- 0 - 비활성화
- 1 - 활성화
query_plan_lift_up_union
query_plan_enable_optimizations이 1일 때만 적용됩니다.
이 설정은 전문가 수준의 설정으로, 개발자가 디버깅 목적으로만 사용해야 합니다. 이 설정은 향후 하위 호환되지 않는 방식으로 변경되거나 제거될 수 있습니다.
- 0 - 비활성화
- 1 - 활성화
query_plan_max_limit_for_lazy_materialization
query_plan_max_limit_for_top_k_optimization
query_plan_max_optimizations_to_apply
이 설정은 전문가 수준의 설정이므로 개발자가 debugging 목적으로만 사용해야 합니다. 이 설정은 향후 하위 호환되지 않는 방식으로 변경되거나 제거될 수 있습니다.
query_plan_max_step_description_length
query_plan_merge_expressions
이 설정은 전문가 수준의 설정으로, 개발자가 디버깅 목적으로만 사용해야 합니다. 이 설정은 향후 하위 호환되지 않는 방식으로 변경되거나 제거될 수 있습니다.
- 0 - 비활성화
- 1 - 활성화
query_plan_merge_filter_into_join_condition
JOIN 조건에 머지하고 CROSS JOIN을 INNER로 변환할 수 있습니다.
query_plan_merge_filters
query_plan_optimize_join_order_algorithm
- ‘greedy’ - 기본 그리디 알고리즘으로, 빠르게 동작하지만 최적의 조인 순서를 찾지 못할 수 있습니다
- ‘dpsize’ - 현재는 Inner 조인에 대해서만 DPsize 알고리즘을 구현하며, 가능한 모든 조인 순서를 고려해 가장 최적인 순서를 찾지만 테이블과 조인 프레디케이트가 많은 쿼리에서는 느릴 수 있습니다. 예를 들어 ‘dpsize,greedy’와 같이 여러 알고리즘을 지정할 수 있습니다.
query_plan_optimize_join_order_limit
query_plan_optimize_join_order_randomize
query_plan_optimize_lazy_final
query_plan_optimize_lazy_materialization
query_plan_optimize_prewhere
query_plan_push_down_limit
이 설정은 전문가 수준의 설정이며, 개발자가 디버깅 용도로만 사용해야 합니다. 이 설정은 향후 하위 호환되지 않는 방식으로 변경되거나 제거될 수 있습니다.
- 0 - 비활성화
- 1 - 활성화
query_plan_read_in_order
query_plan_enable_optimizations의 값이 1일 때만 적용됩니다.
이 설정은 개발자가 디버깅 용도로만 사용해야 하는 전문가 수준 설정입니다. 이 설정은 향후 하위 호환되지 않는 방식으로 변경되거나 제거될 수 있습니다.
- 0 - 비활성화
- 1 - 활성화
query_plan_read_in_order_through_join
query_plan_remove_redundant_distinct
query_plan_enable_optimizations 값이 1일 때만 적용됩니다.
이 설정은 전문가 수준의 설정으로, 개발자가 디버깅 용도로만 사용해야 합니다. 이 설정은 향후 하위 호환되지 않는 방식으로 변경되거나 제거될 수 있습니다.
- 0 - 비활성화
- 1 - 활성화
query_plan_remove_redundant_sorting
query_plan_enable_optimizations이 1인 경우에만 적용됩니다.
이 설정은 개발자가 디버깅할 때만 사용해야 하는 전문가 수준의 설정입니다. 이 설정은 향후 하위 호환되지 않는 방식으로 변경되거나 제거될 수 있습니다.
- 0 - 비활성화
- 1 - 활성화
query_plan_remove_unused_columns
이 설정은 전문가 수준의 설정이므로 개발자가 디버깅할 때만 사용해야 합니다. 이 설정은 향후 하위 호환되지 않는 방식으로 변경되거나 제거될 수 있습니다.
- 0 - 비활성화
- 1 - 활성화
query_plan_reuse_storage_ordering_for_window_functions
optimize_read_in_window_order
윈도우 함수 정렬 시 스토리지 정렬을 사용하는 쿼리 계획 수준 최적화를 켜거나 끕니다.
이 설정은 query_plan_enable_optimizations이 1일 때만 적용됩니다.
이 설정은 개발자가 디버깅 용도로만 사용해야 하는 전문가 수준의 설정입니다. 이 설정은 향후 하위 호환되지 않는 방식으로 변경되거나 제거될 수 있습니다.
- 0 - 비활성화
- 1 - 활성화
query_plan_split_filter
이 설정은 전문가 수준의 설정으로, 개발자가 디버깅 목적으로만 사용해야 합니다. 이 설정은 향후 하위 호환되지 않는 방식으로 변경되거나 제거될 수 있습니다.
- 0 - 비활성화
- 1 - 활성화
query_plan_text_index_add_hint
query_plan_top_k_through_join
ORDER BY ... LIMIT n을 조인 아래로 푸시다운하는 쿼리 계획 수준 최적화를 활성화하거나 비활성화합니다. 조인 전에 유지되는 쪽 입력이 생성해야 하는 행 수를 제한합니다.
이 설정은 query_plan_enable_optimizations 설정이 1일 때만 적용됩니다.
가능한 값:
- 0 - 비활성화
- 1 - 활성화
query_plan_try_use_vector_search
query_plan_enable_optimizations이 1일 때만 적용됩니다.
이 설정은 개발자가 디버깅할 때만 사용해야 하는 전문가 수준의 설정입니다. 향후 하위 호환되지 않는 방식으로 변경되거나 제거될 수 있습니다.
- 0 - 비활성화
- 1 - 활성화
query_profiler_cpu_time_period_ns
-
나노초 단위의 양의 정수입니다.
권장 값:
- 단일 쿼리의 경우 10000000(초당 100회)나노초 이상
- cluster 전체 프로파일링의 경우 1000000000(초당 1회)
- 타이머를 끄려면 0으로 설정합니다.
- 시스템 테이블(system table) trace_log
query_profiler_real_time_period_ns
-
나노초 단위의 양의 정수입니다.
권장 값:
- 단일 쿼리에는 10000000(초당 100회)나노초 이하입니다.
- 클러스터 전체 프로파일링에는 1000000000(초당 1회)입니다.
- 타이머를 끄려면 0입니다.
- 시스템 테이블(system table) trace_log
3000000000.
queue_max_wait_ms
rabbitmq_max_wait_ms
read_backoff_max_throughput
read_backoff_min_concurrency
read_backoff_min_events
read_backoff_min_interval_between_events_ms
read_backoff_min_latency_ms
read_from_distributed_cache_if_exists_otherwise_bypass_cache
read_from_filesystem_cache_if_exists_otherwise_bypass_cache
read_from_page_cache_if_exists_otherwise_bypass_cache
read_from_filesystem_cache_if_exists_otherwise_bypass_cache와 유사하게 패시브 모드에서 사용자 공간 페이지 캐시를 사용합니다.
read_in_order_two_level_merge_threshold
read_in_order_use_buffering
read_in_order_use_virtual_row
read_in_order_use_virtual_row_per_block
read_in_order_use_virtual_row와 함께 활성화하면, 각 파트의 시작 시점뿐 아니라 각 block을 읽은 뒤에도 가상 행을 생성합니다.
이렇게 하면 MergingSortedTransform가 소스 우선순위를 더 자주 다시 지정할 수 있으므로, 다운스트림 필터가 많은 행을 걸러내고 데이터가 파트별로 고르지 않게 분산되어 있을 때 유용합니다.
이 설정을 사용하면 읽기 시 read_in_order_use_buffering 최적화와 사전 병합(read_in_order_two_level_merge_threshold)이 비활성화된다는 점에 유의하십시오.
read_overflow_mode
read_overflow_mode_leaf
throw: 예외를 발생시킵니다(기본값).break: 쿼리 실행을 중단하고 부분 결과를 반환합니다.
read_priority
threadpool 메서드에서만 지원됩니다.
read_through_distributed_cache
readonly
receive_data_timeout_ms
receive_timeout
send_timeout이 설정됩니다.
recursive_cte_max_steps_in_type_inference
getLeastSupertype를 반복적으로 적용하여 결정됩니다. 타입 확장을 비활성화하고 비재귀 부분의 타입만 사용하려면 0으로 설정하십시오.
regexp_dict_allow_hyperscan
regexp_dict_flag_case_insensitive
regexp_dict_flag_dotall
regexp_max_matches_per_row
- 양의 정수.
reject_expensive_hyperscan_regexps
remerge_sort_lowered_memory_bytes_ratio
remote_filesystem_read_method
remote_filesystem_read_prefetch
remote_fs_read_backoff_max_tries
remote_fs_read_max_backoff_ms
remote_read_min_bytes_for_seek
rename_files_after_processing
- 유형: String
- 기본값: 빈 문자열
file 테이블 함수로 처리한 파일의 이름 변경 패턴을 지정할 수 있습니다. 이 옵션을 설정하면 file 테이블 함수가 읽은 모든 파일은 파일 처리가 성공했을 때에만 placeholder가 포함된 지정된 패턴에 따라 이름이 변경됩니다.
자리 표시자
%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로 변경됩니다.
replace_running_query
query_id 매개변수를 전달할 수 있습니다. 이는 쿼리 식별자로 사용되는 임의의 문자열입니다.
이 시점에 동일한 사용자의 동일한 query_id를 가진 쿼리가 이미 존재하면 동작은 replace_running_query 매개변수에 따라 달라집니다.
0 (기본값) – 예외를 발생시킵니다(동일한 query_id를 가진 쿼리가 이미 실행 중이면 해당 쿼리의 실행을 허용하지 않습니다).
1 – 기존 쿼리를 취소하고 새 쿼리 실행을 시작합니다.
세그먼트 조건에 대한 제안 기능을 구현하려면 이 매개변수를 1로 설정하십시오. 다음 문자를 입력한 후 기존 쿼리가 아직 끝나지 않았다면 취소해야 합니다.
replace_running_query_max_wait_ms
query_id를 가진 쿼리의 실행이 끝날 때까지 기다리는 시간입니다.
Possible values:
- 양의 정수입니다.
- 0 — 서버에서 이미 동일한
query_id를 가진 쿼리를 실행 중인 경우, 새 쿼리를 실행하지 못하도록 예외를 발생시킵니다.
replication_wait_for_inactive_replica_timeout
ALTER, OPTIMIZE 또는 TRUNCATE 쿼리를 실행할 때까지 기다리는 시간을 초 단위로 지정합니다.
가능한 값:
0— 기다리지 않습니다.- 음의 정수 — 무제한으로 기다립니다.
- 양의 정수 — 기다릴 시간(초)입니다.
restore_replace_external_dictionary_source_to_null
restore_replace_external_engines_to_null
restore_replace_external_table_functions_to_null
1.
result_overflow_mode
throw
결과의 크기가 제한 중 하나를 초과할 경우 수행할 동작을 설정합니다.
가능한 값:
throw: 예외를 발생시킵니다(기본값).break: 쿼리 실행을 중단하고 부분 결과를 반환합니다. 마치 소스 데이터가 모두 소진된 것처럼 동작합니다.
Break는 실행을
블록 수준에서만 중단합니다. 즉, 반환되는 행 수는
max_result_rows보다 많을 수 있고, max_block_size의 배수이며,
max_threads에 따라 달라집니다.
예시
Query
Result
rewrite_count_distinct_if_with_count_distinct_implementation
countDistcintIf를 재작성할 수 있도록 합니다.
Possible values:
- true — 허용합니다.
- false — 허용하지 않습니다.
rewrite_in_to_join
rows_before_aggregation
s3_allow_multipart_copy
s3_allow_parallel_part_upload
s3_check_objects_after_upload
s3_connect_timeout_ms
s3_create_new_file_on_insert
data.Parquet.gz -> data.1.Parquet.gz -> data.2.Parquet.gz 등입니다.
가능한 값:
- 0 —
INSERT쿼리는 새 파일을 생성하며, 파일이 이미 존재하고 s3_truncate_on_insert가 설정되지 않은 경우 실패합니다. - 1 —
INSERT쿼리는 s3_truncate_on_insert가 설정되지 않은 경우 각 삽입 시 접미사(두 번째 파일부터)를 사용해 새 파일을 생성합니다.
s3_disable_checksum
s3_ignore_file_doesnt_exist
- 1 —
SELECT는 빈 결과를 반환합니다. - 0 —
SELECT는 예외를 발생시킵니다.
s3_list_object_keys_size
s3_max_connections
s3_max_get_burst
s3_max_get_rps와 같습니다.
s3_max_get_rps
s3_max_inflight_parts_for_one_file
s3_max_part_number
s3_max_put_burst
s3_max_put_rps와 같습니다.
s3_max_put_rps
s3_max_single_operation_copy_size
s3_max_single_part_upload_size
s3_max_single_read_retries
s3_max_unexpected_write_error_retries
s3_max_upload_part_size
s3_min_upload_part_size
s3_path_filter_limit
_path 값의 최대 개수입니다.
0은 비활성화됨을 의미합니다.
s3_request_timeout_ms
s3_skip_empty_files
- 0 — 빈 파일이 요청된 포맷과 호환되지 않으면
SELECT가 예외를 발생시킵니다. - 1 — 빈 파일이면
SELECT가 빈 결과를 반환합니다.
s3_slow_all_threads_after_network_error
true로 설정하면 동일한 백업 엔드포인트로 S3 요청을 실행하는 스레드 중 하나라도 socket timeout과 같은 재시도 가능한 네트워크 오류를 만나면, 해당 엔드포인트로 요청을 보내는 모든 스레드의 속도가 느려집니다.
false로 설정하면 각 스레드는 다른 스레드와 관계없이 S3 요청의 백오프를 개별적으로 처리합니다.
s3_strict_upload_part_size
s3_throw_on_zero_files_match
s3_truncate_on_insert
- 0 —
INSERT쿼리는 새 파일을 생성하거나, 파일이 이미 존재하고 s3_create_new_file_on_insert가 설정되지 않은 경우 실패합니다. - 1 —
INSERT쿼리는 파일의 기존 내용을 새 데이터로 대체합니다.
s3_upload_part_size_multiply_factor
s3_upload_part_size_multiply_parts_count_threshold
s3_uri_style
s3_use_adaptive_timeouts
true로 설정하면 모든 s3 요청에서 처음 두 번의 시도에는 더 짧은 송신 및 수신 timeout이 적용됩니다.
false로 설정하면 모든 시도에 동일한 timeout이 적용됩니다.
s3_validate_request_settings
- 1 — 설정을 검증합니다.
- 0 — 설정을 검증하지 않습니다.
s3queue_default_zookeeper_path
s3queue_enable_logging_to_s3queue_log
s3queue_keeper_fault_injection_probability
s3queue_migrate_old_metadata_to_buckets
schema_inference_cache_require_modification_time_for_url
schema_inference_use_cache_for_azure
schema_inference_use_cache_for_file
schema_inference_use_cache_for_hdfs
schema_inference_use_cache_for_s3
schema_inference_use_cache_for_url
secondary_indices_enable_bulk_filtering
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 쿼리가 서로 다른 쿼럼 레플리카 집합에 기록될 수 있으므로, 단일 레플리카가 모든 쓰기를 수신했다고 보장할 수 없기 때문입니다.
관련 항목:
send_logs_level
send_logs_source_regexp
send_profile_events
- 0 — 비활성화됨.
- 1 — 활성화됨.
send_progress_in_http_headers
clickhouse-server 응답에서 X-ClickHouse-Progress HTTP 응답 헤더를 사용하거나 사용하지 않도록 설정합니다.
자세한 내용은 HTTP 인터페이스 설명을 참조하십시오.
가능한 값:
- 0 — 비활성화됨.
- 1 — 활성화됨.
send_table_structure_on_insert_with_inline_data
send_timeout
serialize_query_plan
serialize_string_in_memory_with_zero_byte
session_timezone
timeZone() 및 serverTimeZone()를 사용하여 세션 시간대와 서버 시간대를 확인할 수 있습니다.
가능한 값:
system.time_zones에 있는 모든 시간대 이름(예:Europe/Berlin,UTC,Zulu)
- 첫 번째
SELECT쿼리에서 시간대를 명시하지 않고 사용한toDateTime()은session_timezone설정과 전역 시간대를 따릅니다. - 두 번째 쿼리에서는 DateTime이 String으로부터 파싱되며, 기존 컬럼
d의 유형과 시간대를 상속합니다. 따라서session_timezone설정과 전역 시간대는 반영되지 않습니다.
set_overflow_mode
throw: 예외를 발생시킵니다(기본값).break: 쿼리 실행을 중지하고 부분 결과를 반환합니다. 이는 원본 데이터가 소진된 것처럼 동작합니다.
select_sequential_consistency를 SharedMergeTree와 함께 사용할 때 파트 업데이트에 적용되는 초기 백오프 시간(밀리초)입니다. ClickHouse Cloud에서만 사용할 수 있습니다.
SharedMergeTree에서 select_sequential_consistency를 사용할 때 파트 업데이트에 대한 최대 백오프 시간(밀리초)입니다. ClickHouse Cloud에서만 사용할 수 있습니다.
SharedMergeTree에서 select_sequential_consistency를 사용할 때 파트 업데이트의 최대 재시도 횟수입니다. ClickHouse Cloud에서만 사용할 수 있습니다.
SMT 테이블에서 MOVE|REPLACE|ATTACH 파티션 작업 후 데이터 파트 집합을 자동으로 동기화합니다. Cloud에서만 사용할 수 있습니다.
short_circuit_function_evaluation
enable— 단락 평가에 적합한 함수(예외를 발생시킬 수 있거나 계산 비용이 큰 함수)에 대해 단락 함수 평가를 활성화합니다.force_enable— 모든 함수에 대해 단락 함수 평가를 활성화합니다.disable— 단락 함수 평가를 비활성화합니다.
short_circuit_function_evaluation_for_nulls
short_circuit_function_evaluation_for_nulls_threshold
show_data_lake_catalogs_in_system_tables
show_processlist_include_internal
SHOW PROCESSLIST 쿼리 출력에 내부 보조 프로세스를 표시합니다.
내부 프로세스에는 딕셔너리 재로드, 갱신 가능 구체화 뷰 재로드, SHOW ... 쿼리에서 실행되는 보조 SELECT, 손상된 테이블에 대응하기 위해 내부적으로 실행되는 보조 CREATE DATABASE ... 쿼리 등이 포함됩니다.
show_table_uuid_in_table_create_query_if_not_nil
SHOW TABLE 쿼리의 표시 방식을 설정합니다.
가능한 값:
- 0 — 테이블 UUID 없이 쿼리가 표시됩니다.
- 1 — 테이블 UUID와 함께 쿼리가 표시됩니다.
single_join_prefer_left_table
skip_redundant_aliases_in_udf
- 1 — UDF에서 별칭을 건너뜁니다(치환합니다).
- 0 — UDF에서 별칭을 건너뛰지 않습니다(치환하지 않습니다).
- 어떤 이유로든 ClickHouse가 레플리카에 연결할 수 없습니다. 레플리카에 연결할 때 ClickHouse는 여러 차례 연결을 시도합니다. 이 시도가 모두 실패하면 해당 레플리카는 사용할 수 없는 것으로 간주됩니다.
-
DNS를 통해 레플리카를 확인할 수 없습니다.
DNS를 통해 레플리카의 호스트명을 확인할 수 없다면 다음과 같은 상황일 수 있습니다.
- 레플리카 호스트에 DNS 레코드가 없습니다. 이는 예를 들어 Kubernetes와 같이 동적 DNS를 사용하는 시스템에서 발생할 수 있으며, 다운타임 중에는 노드의 이름을 확인할 수 없을 수 있지만 이는 오류가 아닙니다.
- 구성 오류입니다. ClickHouse 설정 파일에 잘못된 호스트명이 포함되어 있습니다.
- 1 — 스키핑이 활성화됩니다. 세그먼트를 사용할 수 없으면 ClickHouse는 부분 데이터에 기반한 결과를 반환하며, 노드 가용성 문제는 보고하지 않습니다.
- 0 — 스키핑이 비활성화됩니다. 세그먼트를 사용할 수 없으면 ClickHouse는 예외를 발생시킵니다.
sleep_after_receiving_query_ms
sleep_in_send_data_ms
sleep_in_send_tables_status_ms
sort_overflow_mode
throw: 예외를 발생시킵니다.break: 쿼리 실행을 중지하고 부분 결과를 반환합니다.
split_intersecting_parts_ranges_into_layers_final
split_parts_ranges_into_intersecting_and_non_intersecting_final
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에는 영향을 주지 않습니다.
storage_file_read_method
read, pread, mmap. mmap 메서드는 clickhouse-server에는 적용되지 않으며, clickhouse-local용입니다.
storage_system_stack_trace_pipe_read_timeout_ms
system.stack_trace 테이블을 쿼리할 때 스레드로부터 정보를 받기 위해 파이프에서 읽기를 수행할 수 있는 최대 시간입니다. 이 설정은 테스트 목적으로만 사용되며, 사용자가 변경하도록 설계되지 않았습니다.
stream_flush_interval_ms
stream_like_engine_allow_direct_select
stream_like_engine_insert_queue
stream_poll_timeout_ms
system_events_show_zero_values
system.events에서 값이 0인 이벤트도 선택할 수 있습니다.
일부 모니터링 시스템에서는 메트릭 값이 0이더라도 각 체크포인트마다 모든 메트릭 값을 전달해야 합니다.
가능한 값:
- 0 — 비활성화됨.
- 1 — 활성화됨.
system_metric_log_show_zero_values_in_histograms
system.metric_log의 histograms 중첩 컬럼에 기록되는지 여부를 제어합니다.
기본적으로 전체 관측 count가 0인 히스토그램은 기록하지 않습니다. 또한 출력되는 각 히스토그램에서도 관측값이 없는 버킷 항목은 histogram 맵에서 생략됩니다. 이 설정을 활성화하면 count와 관계없이 모든 히스토그램과 모든 버킷을 기록합니다. 이는 모든 체크포인트에서 모든 메트릭이 표시되어야 하는 모니터링 시스템에 유용합니다.
Possible values:
- 0 — 비활성화됨.
count = 0인 히스토그램은 출력되지 않으며, 출력되는 히스토그램에는 하나 이상의 관측값이 있는 버킷만 포함됩니다. - 1 — 활성화됨. 모든 히스토그램이 기록되며, 모든 버킷 경계가
histogram에 표시됩니다.
table_engine_read_through_distributed_cache
table_function_remote_max_addresses
- 양의 정수.
tcp_keep_alive_timeout
temporary_data_in_cache_reserve_space_wait_lock_timeout_milliseconds
temporary_files_buffer_size
temporary_files_codec
- LZ4 — LZ4 압축이 적용됩니다.
- NONE — 압축이 적용되지 않습니다.
text_index_hint_max_selectivity
text_index_like_max_postings_to_read
use_text_index_like_evaluation_by_dictionary_scan이 활성화되어 있어야 합니다.
text_index_like_min_pattern_length
use_text_index_like_evaluation_by_dictionary_scan이 활성화되어 있어야 합니다.
throw_if_no_data_to_insert
clickhouse-client 또는 gRPC 인터페이스를 사용하는 INSERT에만 적용됩니다.
throw_on_error_from_cache_on_write_operations
throw_on_max_partitions_per_insert_block
max_partitions_per_insert_block에 도달했을 때의 동작을 제어합니다.
가능한 값:
true- 삽입 블록이max_partitions_per_insert_block에 도달하면 예외가 발생합니다.false-max_partitions_per_insert_block에 도달하면 경고를 로그에 기록합니다.
throw_on_unsupported_query_inside_transaction
timeout_before_checking_execution_speed
min_execution_speed 이상인지 확인합니다.
timeout_overflow_mode
max_execution_time을 초과하거나
예상 실행 시간이 max_estimated_execution_time을 초과할 때 어떻게 처리할지 설정합니다.
가능한 값:
throw: 예외를 발생시킵니다(기본값).break: 쿼리 실행을 중지하고 부분 결과를 반환합니다. 이는 원본 데이터가 모두 소진된 것처럼 동작합니다.
timeout_overflow_mode_leaf
max_execution_time_leaf를 초과해 실행될 때의 동작을 설정합니다.
가능한 값:
throw: 예외를 발생시킵니다(기본값).break: 쿼리 실행을 중지하고 부분 결과를 반환합니다. 이는 소스 데이터가 모두 소진된 것처럼 동작합니다.
totals_auto_threshold
totals_mode = 'auto'에 대한 임계값입니다.
“WITH TOTALS 수정자” 섹션을 참조하십시오.
totals_mode
max_rows_to_group_by 및 group_by_overflow_mode = 'any'가 설정되어 있을 때 TOTALS를 계산하는 방법입니다.
「WITH TOTALS」 수정자 섹션을 참조하십시오.
trace_profile_events
- 1 — 프로파일 이벤트 tracing이 활성화됩니다.
- 0 — 프로파일 이벤트 tracing이 비활성화됩니다.
trace_profile_events_list
trace_profile_events가 활성화되면, 추적할 이벤트를 지정한 쉼표로 구분된 이름 목록으로 제한합니다.
trace_profile_events_list가 빈 문자열(기본값)이면 모든 프로파일 이벤트를 추적합니다.
예시 값: ‘DiskS3ReadMicroseconds,DiskS3ReadRequestsCount,SelectQueryTimeMicroseconds,ReadBufferFromS3Bytes’
이 설정을 사용하면 많은 수의 쿼리에 대한 데이터를 더 정밀하게 수집할 수 있습니다. 그렇지 않으면 이벤트가 지나치게 많아 내부 시스템 로그 큐에서 오버플로우가 발생해 일부 이벤트가 유실될 수 있습니다.
transfer_overflow_mode
throw: 예외를 발생시킵니다(기본값).break: 쿼리 실행을 중지하고 부분 결과를 반환합니다. 소스 데이터가 소진된 것처럼 동작합니다.
transform_null_in
NULL 값은 비교할 수 없습니다. NULL은 정의되지 않은 값을 의미하기 때문입니다. 따라서 expr = NULL 비교는 항상 false를 반환해야 합니다. 이 설정을 사용하면 IN 연산자에서 NULL = NULL이 true를 반환합니다.
가능한 값:
- 0 —
IN연산자에서NULL값 비교는false를 반환합니다. - 1 —
IN연산자에서NULL값 비교는true를 반환합니다.
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
update_parallel_mode
UPDATE 쿼리의 동작 방식을 결정합니다.
가능한 값:
sync- 모든UPDATE쿼리를 순차적으로 실행합니다.auto- 한 쿼리에서 업데이트되는 컬럼과 다른 쿼리의 표현식에서 사용되는 컬럼 사이에 의존성이 있는UPDATE쿼리만 순차적으로 실행합니다.async-UPDATE쿼리를 동기화하지 않습니다.
update_sequential_consistency
url_base
- 경로 상대 URL(예:
data.csv): RFC 3986에 따라 기준 URL의 경로와 병합됩니다. 기준 경로에서 마지막/뒤의 모든 내용이 상대 URL로 대체되므로 후행 슬래시의 유무가 중요합니다.https://example.com/dir/+data.csv=https://example.com/dir/data.csv이지만,https://example.com/dir+data.csv=https://example.com/data.csv입니다. 기준 URL에 경로가 없으면(예:https://example.com)/가 삽입되어https://example.com/data.csv가 됩니다. 상대 URL의 점 세그먼트(./및../)는 정규화됩니다. 예:https://example.com/dir/+../a.csv=https://example.com/a.csv. - 호스트 상대 URL(예:
/test/data.csv): 기준 URL의 스킴과 호스트를 기준으로 해석됩니다. - 스킴 상대 URL(예:
//other.com/test/data.csv): 기준 URL의 스킴을 사용해 해석됩니다. - 쿼리만 있는 참조(예:
?x=1): 기준 URL 경로에 추가됩니다(기존 쿼리/프래그먼트는 대체됨). - 프래그먼트만 있는 참조(예:
#frag): 기준 URL에 추가되며 기존 쿼리 문자열은 유지됩니다(기존 프래그먼트는 대체됨). - 빈 참조: 프래그먼트가 없는 기준 URL을 반환합니다.
url_base가 https://example.com/def/이면 다음과 같습니다.
data.csv는https://example.com/def/data.csv로 해석됩니다/test/data.csv는https://example.com/test/data.csv로 해석됩니다//other.com/test/data.csv는https://other.com/test/data.csv로 해석됩니다
use_async_executor_for_materialized_views
use_cache_for_count_from_files
file/s3/url/hdfs/azureBlobStorage에서 파일의 행 수를 count할 때 캐싱을 활성화합니다.
기본적으로 활성화되어 있습니다.
use_client_time_zone
use_compact_format_in_distributed_parts_names
Distributed 엔진을 사용하는 테이블에 대해 백그라운드(distributed_foreground_insert) INSERT용 블록을 저장할 때 compact 포맷을 사용합니다.
가능한 값:
- 0 —
user[:password]@host:port#default_database디렉터리 포맷을 사용합니다. - 1 —
[shard{shard_index}[_replica{replica_index}]]디렉터리 포맷을 사용합니다.
use_compact_format_in_distributed_parts_names=0을 사용하면 클러스터 정의의 변경 사항이 백그라운드 INSERT에 적용되지 않습니다.use_compact_format_in_distributed_parts_names=1을 사용하면 클러스터 정의에서 노드 순서를 변경할 경우shard_index/replica_index가 바뀌므로 주의하십시오.
use_concurrency_control
concurrent_threads_soft_limit_num 및 concurrent_threads_soft_limit_ratio_to_cores 전역 서버 설정 참고). 비활성화하면 서버에 과부하가 걸린 경우에도 더 많은 스레드를 사용할 수 있습니다(일반적인 사용에는 권장되지 않으며, 주로 테스트에 필요합니다).
Cloud 기본값: 0.
use_hash_table_stats_for_join_reordering
use_hedged_requests
hedged_connection_timeout 내에 설정되지 않았거나
receive_data_timeout 내에 데이터를 받지 못한 경우 새 연결이 활성화됩니다. 쿼리는 비어 있지 않은 Progress 패킷(또는 allow_changing_replica_until_first_data_packet가 설정된 경우 Data 패킷)을 가장 먼저 보내는 연결을 사용하며,
다른 연결은 취소됩니다. max_parallel_replicas > 1인 쿼리도 지원합니다.
기본적으로 활성화되어 있습니다.
Cloud 기본값: 0.
use_hive_partitioning
/name=value/)에서 Hive 스타일 파티셔닝을 감지하고, 쿼리에서 파티션 컬럼을 가상 컬럼으로 사용할 수 있도록 합니다. 이러한 가상 컬럼의 이름은 파티션 경로의 이름과 같지만, 앞에 _가 붙습니다.
use_iceberg_metadata_files_cache
- 0 - 비활성화됨
- 1 - 활성화됨
use_iceberg_partition_pruning
use_index_for_in_with_subqueries
use_index_for_in_with_subqueries_max_values
use_join_disjunctions_push_down
use_legacy_to_time
toTime 함수를 사용할 수 있습니다. 이 함수는 시간을 유지하면서 시간이 포함된 날짜 값을 특정 고정 날짜로 변환합니다.
활성화하지 않으면 서로 다른 유형의 데이터를 Time 유형으로 변환하는 새로운 toTime 함수를 사용합니다.
기존 레거시 함수는 toTimeWithFixedDate로도 항상 사용할 수 있습니다.
use_page_cache_for_disks_without_file_cache
use_page_cache_for_local_disks
local_filesystem_read_method = 'pread' 또는 'read'가 필요합니다. OS 페이지 캐시를 비활성화하지는 않으며, 이를 위해 min_bytes_to_use_direct_io를 사용할 수 있습니다. 일반 테이블에만 영향을 주며, file() 테이블 함수 또는 File() 테이블 엔진에는 영향을 주지 않습니다.
use_page_cache_for_object_storage
use_page_cache_with_distributed_cache
use_paimon_partition_pruning
use_parquet_metadata_cache
- 0 - 비활성화
- 1 - 활성화
use_partition_pruning
use_partition_key
MergeTree 테이블에서 쿼리 실행 중 파티션 키를 사용해 파티션 프루닝을 수행합니다.
가능한 값:
- 0 — 비활성화됨.
- 1 — 활성화됨.
use_primary_key
- 0 — 비활성화됨.
- 1 — 활성화됨.
use_query_cache
SELECT 쿼리에서 쿼리 캐시를 사용할 수 있습니다. 매개변수 enable_reads_from_query_cache
및 enable_writes_to_query_cache로 캐시 사용 방식을 더 세부적으로 제어할 수 있습니다.
가능한 값:
- 0 - 비활성화
- 1 - 활성화
use_query_condition_cache
WHERE 절의 조건을 만족하지 않는 데이터 파트 내 그래뉼 범위를 저장하고,
이 정보를 이후 쿼리에서 임시 인덱스로 재사용합니다.
가능한 값:
- 0 - 비활성화
- 1 - 활성화
use_roaring_bitmap_iceberg_positional_deletes
use_skip_indexes
- 0 — 비활성화됨.
- 1 — 활성화됨.
use_skip_indexes_for_disjunctions
- 0 — 비활성화됨.
- 1 — 활성화됨.
use_skip_indexes_for_top_k
ORDER BY <column> LIMIT n 쿼리에서 해당 컬럼에 minmax 스킵 인덱스가 있는 경우, 옵티마이저는 최종 결과와 관련 없는 그래뉼을 건너뛰기 위해 minmax 인덱스를 사용하려고 시도합니다. 이렇게 하면 쿼리 지연 시간을 줄일 수 있습니다.
가능한 값:
- 0 — 비활성화됨.
- 1 — 활성화됨.
use_skip_indexes_if_final
- 0 — 비활성화됨.
- 1 — 활성화됨.
use_skip_indexes_if_final_exact_mode
- 0 — 비활성화됨.
- 1 — 활성화됨.
use_skip_indexes_on_data_read
- 0 — 비활성화.
- 1 — 활성화.
use_statistics
use_statistics_cache
use_statistics_for_part_pruning
SELECT 쿼리의 프루닝에서 데이터를 읽기 전에 일치하는 데이터를 포함할 수 없는 파트를 제외하기 위해 컬럼 통계(예: MinMax 통계)를 사용합니다.
가능한 값:
- 0 — 비활성화.
- 1 — 활성화.
use_strict_insert_block_limits
- 최소 임계값(AND): min_insert_block_size_rows와 min_insert_block_size_bytes에 모두 도달한 경우
- 최대 임계값(OR): max_insert_block_size_rows 또는 max_insert_block_size_bytes 중 하나에 도달한 경우
- 최소 임계값(OR): min_insert_block_size_rows 또는 min_insert_block_size_bytes 중 하나에 도달한 경우
테이블 함수에서 삽입 테이블의 구조 사용
use_text_index_header_cache
use_text_index_like_evaluation_by_dictionary_scan
use_text_index_postings_cache
use_text_index_tokens_cache
use_top_k_dynamic_filtering
ORDER BY <column> LIMIT n 쿼리를 실행할 때 동적 필터링 최적화를 활성화합니다.
활성화하면 쿼리 실행기는 결과 세트의 최종 top N 행에 포함되지 않을 그래뉼과 행을 건너뛰려고 시도합니다. 이 최적화는 동적으로 적용되며, 지연 시간 개선 효과는 데이터 분포와 쿼리에 다른 프레디케이트가 있는지에 따라 달라집니다.
가능한 값:
- 0 — 비활성화됨.
- 1 — 활성화됨.
use_top_k_dynamic_filtering_for_variable_length_types
String, Array, Map, 가변 길이 요소를 포함하는 Tuple)인 경우에도 use_top_k_dynamic_filtering을 적용할 수 있도록 허용합니다.
이러한 타입에서는 동적 필터가 수행하는 행별 임계값 비교 비용이, 컬럼의 사전식 최소값이 우세하고(예: 대부분이 빈 문자열) 건너뛸 수 있는 그래뉼이 거의 없을 때, 그로 인해 얻는 절감 효과보다 더 커질 수 있습니다. 이런 경우 동적 필터는 쿼리 지연 시간을 개선하기는커녕 오히려 악화시킬 수 있습니다.
이 설정이 0이면 동적 필터링은 메모리에서 값의 최대 크기가 고정된 컬럼(숫자, Date, DateTime, FixedString, Enum, 이러한 타입의 Nullable, 이러한 타입의 Tuple)으로 제한됩니다. 1로 설정하면 동적 필터링이 가변 길이 타입에도 적용됩니다.
가능한 값:
- 0 — 비활성화됨.
- 1 — 활성화됨.
use_uncompressed_cache
use_variant_as_common_type
Variant를 사용할 수 있습니다.
예시:
use_variant_default_implementation_for_comparisons
use_with_fill_by_sorting_prefix
validate_enum_literals_in_operators
IN, NOT IN, ==, != 같은 연산자에서 enum 리터럴을 enum 유형에 대해 검증하며, 리터럴이 유효한 enum 값이 아니면 예외를 발생시킵니다.
validate_mutation_query
validate_polygons
- 0 — 예외 발생이 비활성화됩니다.
pointInPolygon은 유효하지 않은 폴리곤도 허용하며, 이에 대해 잘못된 결과를 반환할 수 있습니다. - 1 — 예외 발생이 활성화됩니다.
variant_throw_on_type_mismatch
true(기본값) — 예외를 발생시킵니다.false— 대신 해당 행에NULL을 반환합니다.
vector_search_filter_strategy
- ‘auto’ - 포스트필터링(정확한 동작 방식은 향후 변경될 수 있습니다).
- ‘postfilter’ - 벡터 유사성 인덱스를 사용해 최근접 이웃을 식별한 다음, 다른 필터를 적용합니다.
- ‘prefilter’ - 다른 필터를 먼저 평가한 다음, 브루트포스 검색을 수행해 이웃을 식별합니다.
vector_search_index_fetch_multiplier
vector_search_postfilter_multiplier
벡터 유사성 인덱스에서 가져올 최근접 이웃 수를 이 값만큼 곱합니다. 다른 프레디케이트와 함께 포스트필터링을 수행할 때 또는 설정 vector_search_with_rescoring = 1인 경우에만 적용됩니다.
vector_search_with_rescoring
wait_changes_become_visible_after_commit_mode
wait_for_async_insert
wait_for_async_insert_timeout
wait_for_window_view_fire_signal_timeout
webassembly_udf_max_fuel
webassembly_udf_max_input_block_size
webassembly_udf_max_instances
webassembly_udf_max_memory
window_view_clean_interval
window_view_heartbeat_interval
workload
write_full_path_in_iceberg_metadata
s3://를 포함한 전체 경로를 Iceberg 메타데이터 파일에 기록합니다.