use_async_executor_for_materialized_views
materialized view 쿼리를 async 방식으로, 필요에 따라 멀티스레드로 실행합니다. INSERT 중 materialized view 처리 속도를 높일 수 있지만, 메모리를 더 많이 사용할 수도 있습니다.use_cache_for_count_from_files
테이블 함수file/s3/url/hdfs/azureBlobStorage에서 파일의 count를 수행할 때 행 수 캐싱을 활성화합니다.
기본적으로 활성화되어 있습니다.
use_client_time_zone
서버 시간대를 적용하는 대신, DateTime 문자열 값을 해석할 때 클라이언트 시간대를 사용합니다.use_columns_cache
컬럼 캐시 사용 여부를 지정합니다. 0 또는 1을 사용할 수 있으며, 기본값은 0(비활성화)입니다. 컬럼 캐시는MergeTree 테이블에서 역직렬화된 컬럼을 저장하므로, 자주 사용되는 데이터를 반복해서 압축 해제하고 역직렬화하는 작업이 사라집니다. 따라서 동일한 데이터에 반복적으로 실행되는 쿼리의 지연 시간을 크게 줄일 수 있습니다. 캐시는 테이블 UUID, 데이터 파트 이름, 컬럼명, 그리고 약 65536개 행으로 구성된 연속 그래뉼의 스트라이프(stripe)를 키로 사용합니다.
엔트리는 테이블 UUID를 키로 사용하므로, 캐시는 Atomic, Replicated, Shared(ClickHouse Cloud의 기본 데이터베이스 엔진)처럼 UUID를 할당하는 데이터베이스의 테이블에서만 동작합니다. 레거시 Ordinary 데이터베이스의 MergeTree 테이블은 UUID가 nil이므로 별도의 알림 없이 이 설정을 무시합니다.
현재 캐시는 wide 파트에만 적용됩니다. compact 파트의 데이터는 컬럼 캐시에서 읽거나 컬럼 캐시에 기록하지 않으므로, 읽기 가속 여부는 파트 포맷에 따라 달라집니다.
하나의 엔트리에는 한 스트라이프 내의 연속된 그래뉼 범위가 저장됩니다. 그래뉼은 첫 번째 행부터 마지막 행까지 모두 읽힌 후에만 캐시에 저장되고, 읽기는 그래뉼 단위로 캐시에서 처리되며, 서로 다른 읽기가 기록한 범위는 하나로 머지됩니다. 따라서 파트를 서로 다른 마크 범위로 나누어 읽더라도 엔트리를 공유할 수 있습니다.
use_concurrency_control
서버의 동시성 제어를 따릅니다(concurrent_threads_soft_limit_num 및 concurrent_threads_soft_limit_ratio_to_cores 전역 서버 설정 참조). 비활성화하면 서버에 과부하가 걸린 경우에도 더 많은 스레드를 사용할 수 있습니다(일반적인 사용에는 권장되지 않으며, 주로 테스트에 필요합니다).
use_constant_folding_in_index_analysis
파트별 프라이머리 키와 스킵 인덱스를 분석할 때 파티션 수준 상수를 필터 프레디케이트에 대입합니다. 파티션 키가 필터에서 프라이머리 키 또는 스킵 인덱스 컬럼과 함께 사용되면, 인덱스 분석 시 각 파트 내에서 파티션 값을 개별적으로 폴딩할 수 있습니다. 이는 분기가 서로 다른 파티션을 대상으로 하는 논리합 필터에서 특히 유용합니다. 예를 들어,PARTITION BY a와 ORDER BY b가 있는 경우:
a = 1의 파트에서는 조건이 b >= 1로 축약되고, 파티션 a = 2 및 a = 3에서는 b > 10으로 축약되므로, 각 파트는 실제로 적용되는 프레디케이트를 기준으로 분석됩니다.
가능한 값:
- 0 — 비활성화됨.
- 1 — 활성화됨.
use_hash_table_stats_for_join_reordering
조인 재정렬 시 카디널리티 추정을 위해 수집된 해시 테이블 통계를 사용하도록 설정합니다use_hedged_requests
원격 쿼리에 대한 hedged requests 로직을 활성화합니다. 이를 통해 하나의 쿼리에 대해 서로 다른 레플리카로 여러 연결을 설정할 수 있습니다. 기존 레플리카 연결이hedged_connection_timeout 내에 설정되지 않거나
receive_data_timeout 내에 데이터를 수신하지 못하면 새 연결이 활성화됩니다. 쿼리는 비어 있지 않은 Progress packet(또는 allow_changing_replica_until_first_data_packet가 설정된 경우 Data packet)을 먼저 보내는 연결을 사용하고,
다른 연결은 취소됩니다. max_parallel_replicas > 1인 쿼리도 지원됩니다.
기본적으로 활성화되어 있습니다.
Cloud 기본값: 0.
use_hive_partitioning
활성화되면 ClickHouse는 파일 기반 테이블 엔진 File/S3/URL/HDFS/AzureBlobStorage의 경로(/name=value/)에서 Hive 스타일 파티셔닝을 감지하고, 쿼리에서 파티션 컬럼을 가상 컬럼으로 사용할 수 있도록 합니다. 이러한 가상 컬럼의 이름은 파티셔닝된 경로의 이름과 같지만, 앞에 _가 붙습니다.
use_indexes_refiner_in_read_pools
MergeTree 읽기 풀 내에서 데이터 읽기 시점에 평가된 인덱스를 적용합니다. 스킵 인덱스(use_skip_indexes_on_data_read 참조) 또는 프로젝션 인덱스(optimize_use_projection_filtering 참조)에 의해 완전히 필터링된 마크 범위는 읽는 동안 그래뉼 단위로 건너뛰는 대신, 해당 범위에 대한 읽기 작업을 생성하기 전에 제거됩니다.
프리페치 읽기 풀에서는 제거된 범위를 프리페치하지 않습니다. 하지만 작업 경계와 filesystem_prefetch_max_memory_usage / filesystem_prefetches_limit에 따른 프리페치 허용 여부는 여전히 필터링 전에 결정되므로, 선택도가 매우 높은 필터에서는 남은 작업이 의도한 작업 크기보다 작아질 수 있고 허용 여부 판단도 보수적으로 이루어질 수 있습니다.
use_join_disjunctions_push_down
JOIN 조건에서 OR로 연결된 부분을 해당 입력 측으로 pushdown하는 기능(“partial pushdown”)을 활성화합니다. 이 기능을 사용하면 저장 엔진이 더 이른 단계에서 필터링할 수 있으므로 읽는 데이터 양을 줄일 수 있습니다. 이 최적화는 쿼리 의미를 그대로 유지하며, 각 최상위 OR 분기가 대상 측에 대해 최소 1개의 결정적(deterministic) 프레디케이트를 제공하는 경우에만 적용됩니다.use_legacy_to_time
활성화하면toTime이라는 이름은 시간을 유지하면서 시간이 포함된 날짜 값을 특정 고정 날짜로 변환하는 기존 toTime 함수를 가리킵니다.
비활성화하면 이 이름은 다양한 타입의 값을 Time 타입으로 변환하는 새로운 toTime 함수를 가리킵니다.
이 설정과 관계없이 기존 함수는 toTimeWithFixedDate로도 언제나 사용할 수 있습니다.
이 설정이 활성화된 동안에는 CAST(x AS Time) 또는 x::Time을 사용하여 Time 타입으로 변환하십시오.
use_lightweight_primary_key_index_analysis
프라이머리 키가 긴MergeTree 테이블의 프라이머리 키 인덱스 분석을 최적화합니다.
활성화하면 인덱스 분석의 실행 시간은 프라이머리 키 길이보다 쿼리 필터의 복잡도(실제로 사용하는 키 컬럼)에 주로 좌우됩니다. 따라서 정렬 키를 확장하더라도 그중 일부 컬럼에만 필터를 적용하는 쿼리의 경우 인덱스 분석에 추가되는 오버헤드는 거의 없습니다.
가능한 값:
- 0 — 비활성화됨. 인덱스 분석 중 모든 프라이머리 키 컬럼이 처리됩니다.
- 1 — 활성화됨.
use_parquet_metadata_cache
활성화하면 Parquet 포맷에서 Parquet 메타데이터 캐시를 사용할 수 있습니다. 가능한 값:- 0 - 비활성화
- 1 - 활성화
use_primary_key
MergeTree 테이블의 쿼리 실행 중 그래뉼을 프루닝할 때 프라이머리 키를 사용합니다. 가능한 값:- 0 — 비활성화됨.
- 1 — 활성화됨.
use_reader_executor
실험적 기능입니다. 읽기 버퍼로 이루어진 기존의 중첩 구조 대신 새로운 파이프라인ReaderExecutor를 통해 읽기를 라우팅합니다. 실행기가 아직 지원하지 않는 구성에서는 기존 경로로 대체됩니다.
use_roaring_bitmap_iceberg_positional_deletes
Iceberg 위치 기반 삭제에 Roaring 비트맵을 사용합니다.use_streaming_marks_compression
MergeTree 파트의 마크를 로딩할 때, 먼저 전체 일반 마크 배열을 생성하는 대신 마크를 블록 단위로 하나씩(스트리밍 방식으로) 인메모리 표현으로 압축합니다. 이렇게 하면 서브스트림이 많은 compact 파트(예: JSON 컬럼이 있는 테이블에서write_marks_for_substreams_in_compact_parts가 활성화된 경우)에서 마크를 로딩하는 동안 최대 메모리 사용량을 크게 줄일 수 있습니다.
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 중 하나에 도달한 경우입니다.
- 최소 임계값(OR): min_insert_block_size_rows OR min_insert_block_size_bytes 중 하나에 도달한 경우입니다.