메인 콘텐츠로 건너뛰기
시스템 테이블 system.merge_tree_settings는 전역으로 설정된 MergeTree 설정을 표시합니다. MergeTree 설정은 서버 구성 파일의 merge_tree 섹션에서 설정하거나, 각 MergeTree 테이블별로 CREATE TABLE 문의 SETTINGS 절에서 개별적으로 지정할 수 있습니다. 설정 max_suspicious_broken_parts를 사용자 지정하는 예시: 서버 구성 파일에서 모든 MergeTree 테이블의 기본값을 설정합니다:
<merge_tree>
    <max_suspicious_broken_parts>5</max_suspicious_broken_parts>
</merge_tree>
특정 테이블에 대한 설정:
CREATE TABLE tab
(
    `A` Int64
)
ENGINE = MergeTree
ORDER BY tuple()
SETTINGS max_suspicious_broken_parts = 500;
특정 테이블의 설정을 ALTER TABLE ... MODIFY SETTING을 사용하여 변경합니다:
ALTER TABLE tab MODIFY SETTING max_suspicious_broken_parts = 100;

-- 전역 기본값으로 재설정 (system.merge_tree_settings의 값)
ALTER TABLE tab RESET SETTING max_suspicious_broken_parts;

MergeTree 설정

adaptive_write_buffer_initial_size

적응형 쓰기 버퍼의 초기 크기입니다.

add_implicit_sign_column_constraint_for_collapsing_engine

true로 설정하면 CollapsingMergeTree 또는 VersionedCollapsingMergeTree 테이블의 sign 컬럼에 유효한 값(1-1)만 허용하는 암시적 제약 조건을 추가합니다.

add_minmax_index_for_block_number_column

활성화하면 영구 가상 컬럼 _block_number에 암시적 min-max(스키핑) 인덱스가 추가됩니다. 이 설정이 적용되려면 enable_block_number_column = 1이어야 합니다. 인덱스는 삽입 중에는 생성되지 않고 머지 중에만 생성됩니다. 삽입 시점의 블록 번호는 임시값이므로 상수만 인덱싱하게 됩니다.

add_minmax_index_for_block_offset_column

활성화하면 영구 저장되는 가상 컬럼 _block_offset에 암시적 min-max(스키핑) 인덱스가 추가됩니다. 이 설정을 적용하려면 enable_block_offset_column = 1이어야 합니다. 인덱스는 삽입 중에는 생성되지 않으며 머지 중에만 생성됩니다.

add_minmax_index_for_numeric_columns

활성화되면 테이블의 모든 숫자형 컬럼에 min-max(스키핑) 인덱스가 추가됩니다.

add_minmax_index_for_string_columns

활성화되면 테이블의 모든 문자열 컬럼에 min-max(스키핑) 인덱스가 추가됩니다.

add_minmax_index_for_temporal_columns

활성화되면 테이블의 모든 Date, Date32, Time, Time64, DateTime 및 DateTime64 컬럼에 min-max(스키핑) 인덱스가 추가됩니다

allow_coalescing_columns_in_partition_or_order_key

활성화하면 CoalescingMergeTree 테이블에서 coalescing되는 컬럼을 파티션 또는 정렬 키에 사용할 수 있습니다.

allow_commit_order_projection

_block_number_block_offset 가상 컬럼을 저장하는 커밋 순서 프로젝션을 활성화하며, 머지 이후에도 원래 삽입 순서를 유지합니다. 이 기능을 사용하려면 enable_block_number_columnenable_block_offset_column이 활성화되어 있어야 합니다.

allow_experimental_replacing_merge_with_cleanup

is_deleted 컬럼이 있는 ReplacingMergeTree에 대해 실험적인 CLEANUP 머지를 허용합니다. 활성화하면 OPTIMIZE ... FINAL CLEANUP을 사용해 파티션의 모든 파트를 수동으로 하나의 파트로 머지하고, 삭제된 모든 행을 제거할 수 있습니다. 또한 min_age_to_force_merge_seconds, min_age_to_force_merge_on_partition_only, enable_replacing_merge_with_cleanup_for_min_age_to_force_merge 설정을 통해 이러한 머지가 백그라운드에서 자동으로 수행되도록 활성화할 수도 있습니다.

allow_experimental_reverse_key

MergeTree 정렬 키에서 내림차순 정렬을 지원합니다. 이 설정은 시계열 분석과 Top-N 쿼리에 특히 유용하며, 데이터를 시간 역순으로 저장해 쿼리 성능을 최적화할 수 있습니다. allow_experimental_reverse_key를 활성화하면 MergeTree 테이블의 ORDER BY 절에서 내림차순 정렬 순서를 정의할 수 있습니다. 이를 통해 내림차순 쿼리에서 ReadInReverseOrder 대신 더 효율적인 ReadInOrder 최적화를 사용할 수 있습니다. 예시
CREATE TABLE example
(
time DateTime,
key Int32,
value String
) ENGINE = MergeTree
ORDER BY (time DESC, key)  -- 'time' 필드 내림차순 정렬
SETTINGS allow_experimental_reverse_key = 1;

SELECT * FROM example WHERE key = 'xxx' ORDER BY time DESC LIMIT 10;
쿼리에서 ORDER BY time DESC를 사용하면 ReadInOrder가 적용됩니다. 기본값: false

allow_floating_point_partition_key

부동소수점 수를 파티션 키로 사용할 수 있도록 허용합니다. 가능한 값:
  • 0 — 부동소수점 파티션 키는 허용되지 않습니다.
  • 1 — 부동소수점 파티션 키가 허용됩니다.

allow_nullable_key

널 허용 타입을 프라이머리 키로 사용할 수 있도록 허용합니다.

allow_part_offset_column_in_projections

프로젝션의 SELECT 쿼리에서 ‘_part_offset’ 컬럼 사용을 허용합니다.

allow_reduce_blocking_parts_task

shared merge tree 테이블에서 차단 파트를 줄이는 백그라운드 작업입니다. ClickHouse Cloud에서만 사용할 수 있습니다

allow_remote_fs_zero_copy_replication

아직 준비되지 않았으므로 production 환경에서는 이 설정을 사용하지 마십시오.

allow_summing_columns_in_partition_or_order_key

활성화하면 SummingMergeTree 테이블의 합산 컬럼을 파티션 또는 정렬 키에 사용할 수 있습니다.

allow_suspicious_indices

표현식이 동일한 프라이머리/보조 인덱스와 정렬 키를 거부합니다

allow_vertical_merges_from_compact_to_wide_parts

compact 파트에서 wide 파트로의 수직 병합을 허용합니다. 이 설정은 모든 레플리카에서 동일한 값으로 설정되어야 합니다.

alter_column_secondary_index_mode

보조 인덱스가 적용된 컬럼을 수정하는 ALTER 명령을 허용할지와, 허용하는 경우 어떤 작업을 수행할지 구성합니다. 기본적으로 이러한 ALTER 명령은 허용되며 인덱스는 다시 빌드됩니다. 가능한 값:
  • rebuild (기본값): ALTER 명령에서 해당 컬럼의 영향을 받는 모든 보조 인덱스를 다시 빌드합니다.
  • throw: 예외를 발생시켜 명시적 보조 인덱스가 적용된 컬럼에 대한 모든 ALTER를 방지합니다. 암시적 인덱스는 이 제한에서 제외되며 다시 빌드됩니다.
  • drop: 종속된 보조 인덱스를 삭제합니다. 새 파트에는 인덱스가 포함되지 않으므로, 이를 다시 생성하려면 MATERIALIZE INDEX가 필요합니다.
  • compatibility: 원래 동작과 일치합니다. ALTER ... MODIFY COLUMN에서는 throw를, ALTER ... UPDATE/DELETE에서는 rebuild를 적용합니다.
  • ignore: 전문가용 옵션입니다. 인덱스가 불일치한 상태로 유지되므로 잘못된 쿼리 결과가 발생할 수 있습니다.

always_fetch_merged_part

true이면 이 레플리카는 파트를 절대 머지하지 않으며, 항상 다른 레플리카에서 병합된 파트를 다운로드합니다. Possible values:
  • true, false
뮤테이션, replace, detach 등의 작업에서는 하드링크 대신 항상 데이터를 복사합니다.

apply_patches_on_merge

값이 true이면 머지 시 patch part가 적용됩니다

assign_part_uuids

활성화하면 새 파트마다 고유한 파트 식별자가 할당됩니다. 활성화하기 전에 모든 레플리카가 UUID 버전 4를 지원하는지 확인하십시오.

async_block_ids_cache_update_wait_ms

각 삽입 반복에서 async_block_ids_cache가 업데이트될 때까지 대기하는 시간입니다.

async_insert

true로 설정하면 INSERT 쿼리의 데이터가 큐에 저장되며, 이후 백그라운드에서 테이블에 플러시됩니다.

auto_statistics_types

적용 가능한 모든 컬럼에 대해 자동으로 계산할 통계 유형의 쉼표로 구분된 목록입니다. 지원되는 통계 유형: tdigest, countmin, minmax, nullcount, uniq.

background_task_preferred_step_execution_time_ms

머지 또는 mutation의 한 단계 실행에 대한 목표 시간입니다. 한 단계 실행 시간이 더 길면 이 값을 초과할 수 있습니다

cache_populated_by_fetch

이 설정은 ClickHouse Cloud에만 적용됩니다.
cache_populated_by_fetch가 비활성화되어 있으면(기본 설정), 새로운 데이터 파트는 해당 파트가 필요한 쿼리가 실행될 때만 파일 시스템 캐시에 로드됩니다. 활성화하면 cache_populated_by_fetch에 의해 쿼리로 동작을 트리거하지 않아도 모든 노드가 스토리지의 새로운 데이터 파트를 각자의 파일 시스템 캐시로 로드합니다. 관련 항목

cache_populated_by_fetch_filename_regexp

이 설정은 ClickHouse Cloud에만 적용됩니다.
비어 있지 않으면 fetch 후 캐시에 예열되는 파일은 이 정규식과 일치하는 파일로만 제한됩니다(cache_populated_by_fetch가 활성화된 경우).

check_delay_period

더 이상 사용되지 않는 설정으로, 아무런 동작도 하지 않습니다.

check_sample_column_is_correct

테이블 생성 시 샘플링 또는 샘플링 표현식에 사용하는 컬럼의 데이터 타입이 올바른지 검사할지 설정합니다. 데이터 타입은 부호 없는 정수 타입 중 하나여야 합니다: UInt8, UInt16, UInt32, UInt64. 가능한 값:
  • true — 검사가 활성화됩니다.
  • false — 테이블 생성 시 검사가 비활성화됩니다.
기본값: true. 기본적으로 ClickHouse 서버는 테이블 생성 시 샘플링 또는 샘플링 표현식에 사용하는 컬럼의 데이터 타입을 검사합니다. 이미 잘못된 샘플링 표현식이 있는 테이블이 있고, 서버 시작 시 예외가 발생하지 않도록 하려면 check_sample_column_is_correctfalse로 설정하십시오.

clean_deleted_rows

더 이상 사용되지 않는 설정으로, 아무런 동작도 하지 않습니다.

cleanup_delay_period

오래된 큐 로그, 블록 해시, 파트를 정리하는 최소 주기입니다.

cleanup_delay_period_random_add

테이블 수가 매우 많은 경우 발생할 수 있는 thundering herd 효과와 그에 따른 ZooKeeper DoS를 방지하기 위해, cleanup_delay_period에 0초부터 x초까지의 균등 분포 값을 추가합니다.

cleanup_thread_preferred_points_per_iteration

백그라운드 정리 작업에 권장되는 배치 크기입니다(포인트는 추상적인 단위이지만, 1포인트는 대략 삽입된 block 1개에 해당합니다).

cleanup_threads

더 이상 사용되지 않는 설정으로, 아무런 동작도 하지 않습니다.

clone_replica_zookeeper_create_get_part_batch_size

레플리카를 복제할 때 ZooKeeper의 multi-create get-part 요청에 사용되는 배치 크기입니다.

columns_and_secondary_indices_sizes_lazy_calculation

테이블 초기화 시가 아니라 첫 요청 시 컬럼 및 보조 인덱스 크기를 지연 계산합니다.

columns_to_prewarm_mark_cache

마크 캐시를 예열할 컬럼 목록입니다(활성화된 경우). 비어 있으면 모든 컬럼을 의미합니다.

compact_parts_max_bytes_to_buffer

ClickHouse Cloud에서만 사용할 수 있습니다. compact 파트에서 단일 stripe에 쓸 수 있는 최대 바이트 수입니다.

compact_parts_max_granules_to_buffer

ClickHouse Cloud에서만 사용할 수 있습니다. compact 파트에서 단일 stripe에 기록할 수 있는 그래뉼의 최대 수입니다

compact_parts_merge_max_bytes_to_prefetch_part

ClickHouse Cloud에서만 사용할 수 있습니다. 머지 중 compact 파트 전체를 메모리에 한 번에 읽어들이기 위한 최대 크기입니다.

compatibility_allow_sampling_expression_not_in_primary_key

프라이머리 키에 포함되지 않은 샘플링 표현식으로 테이블을 생성할 수 있도록 허용합니다. 이는 하위 호환성을 위해 잘못된 테이블로 서버를 일시적으로 실행해야 할 때만 필요합니다.

compress_marks

마크는 압축을 지원하므로 mark file의 크기를 줄이고 네트워크 전송을 더 빠르게 합니다.

compress_per_column_in_compact_parts

Compact 파트의 물리적 레이아웃을 제어합니다. true(기본값)인 경우 granule의 각 컬럼이 새로운 압축 블록에서 시작하므로, ClickHouse가 디스크에서 불필요한 컬럼을 읽지 않고 건너뛸 수 있습니다. false인 경우 granule 내의 모든 컬럼이 동일한 압축 블록에 패킹되어 압축률은 향상되지만, 읽기 시 더 많은 데이터를 압축 해제해야 합니다. 이 설정은 항상 모든 컬럼을 읽는 워크로드(예: 프로젝션)에 유용합니다.

compress_primary_key

기본 키(primary key)는 압축을 지원하므로, 기본 키 파일 크기를 줄이고 네트워크 전송 속도를 높입니다.

concurrent_part_removal_threshold

비활성 데이터 파트 수가 이 값 이상일 때만 동시 파트 제거를 활성화합니다(‘max_part_removal_threads’ 참조).

concurrent_part_removal_threshold_for_remote_disk

concurrent_part_removal_threshold와 동일하지만, 제거되는 파트 중 하나 이상이 원격 디스크에 저장된 경우에 사용됩니다. 기본값이 더 낮은 이유는 원격 스토리지에서 각 파트를 제거할 때 일반적으로 네트워크 왕복이 필요하기 때문입니다(예: 객체 스토리지에서는 파트마다 HTTP DELETE 1회). 따라서 파트 100개를 순차적으로 제거하는 것만으로도 DROP TABLE이 수십 초 동안 지연될 수 있습니다.

deduplicate_merge_projection_mode

(Replicated, Shared) MergeTree가 아닌 비고전적 MergeTree를 사용하는 테이블에서 프로젝션 생성을 허용할지 여부를 지정합니다. ignore 옵션은 순전히 호환성을 위한 것으로, 잘못된 결과를 초래할 수 있습니다. 그 외의 경우에는 허용 시 프로젝션을 머지할 때 어떤 동작을 수행할지, 즉 삭제할지 다시 빌드할지를 지정합니다. 따라서 고전적인 MergeTree는 이 설정을 무시합니다. 또한 OPTIMIZE DEDUPLICATE도 제어하지만, 효과는 모든 MergeTree 엔진 계열 구성원에 적용됩니다. lightweight_mutation_projection_mode 옵션과 유사하게, 이것도 part 수준입니다. 가능한 값:
  • ignore
  • throw
  • drop
  • rebuild

default_compression_codec

테이블 선언에서 특정 컬럼의 압축 코덱이 정의되지 않은 경우 사용할 기본 압축 코덱을 지정합니다. 컬럼의 압축 코덱 선택 순서는 다음과 같습니다.
  1. 테이블 선언에서 해당 컬럼에 정의된 압축 코덱
  2. default_compression_codec에 정의된 압축 코덱(이 설정)
  3. compression 설정에 정의된 기본 압축 코덱 기본값: 빈 문자열(정의되지 않음)입니다.

detach_not_byte_identical_parts

머지 또는 mutation 후 데이터 파트가 다른 레플리카의 데이터 파트와 바이트 단위로 동일하지 않을 경우, 해당 레플리카에서 그 데이터 파트를 분리할지 여부를 설정합니다. 비활성화하면 데이터 파트는 제거됩니다. 이러한 파트를 나중에 분석하려면 이 설정을 활성화하십시오. 이 설정은 데이터 복제가 활성화된 MergeTree 테이블에 적용됩니다. 가능한 값:
  • 0 — 파트가 제거됩니다.
  • 1 — 파트가 분리됩니다.

detach_old_local_parts_when_cloning_replica

손실된 레플리카를 복구할 때 기존 로컬 파트를 제거하지 않습니다. Possible values:
  • true
  • false

disable_detach_partition_for_zero_copy_replication

zero-copy 복제에서 DETACH PARTITION 쿼리를 비활성화합니다.

disable_fetch_partition_for_zero_copy_replication

zero-copy 복제에서 FETCH PARTITION 쿼리를 비활성화합니다.

disable_freeze_partition_for_zero_copy_replication

zero-copy 복제에서 FREEZE PARTITION 쿼리를 비활성화합니다.

디스크

스토리지 디스크의 이름입니다. 스토리지 정책 대신 지정할 수 있습니다.

distributed_index_analysis_min_indexes_bytes_to_activate

분산 인덱스 분석이 활성화되기 위한 디스크상의 최소 인덱스 크기(데이터 스키핑 및 프라이머리 키, 비압축 기준)

distributed_index_analysis_min_parts_to_activate

분산 인덱스 분석을 활성화하는 데 필요한 최소 파트 수

dynamic_serialization_version

Dynamic 데이터 타입의 직렬화 버전입니다. 호환성을 위해 필요합니다. 가능한 값:
  • v1
  • v2
  • v3

enable_block_number_column

각 행에 대해 _block_number 컬럼이 저장되도록 활성화합니다.

enable_block_offset_column

머지 시 가상 컬럼 _block_offset을 저장합니다.

enable_index_granularity_compression

가능한 경우 메모리 내 인덱스 세분화 수준 값을 압축합니다

enable_max_bytes_limit_for_min_age_to_force_merge

설정 min_age_to_force_merge_secondsmin_age_to_force_merge_on_partition_only가 설정 max_bytes_to_merge_at_max_space_in_pool을 따를지 여부를 지정합니다. 가능한 값:
  • true
  • false

enable_mixed_granularity_parts

index_granularity_bytes 설정을 사용해 granule 크기를 제어하는 방식으로 전환할지 여부를 활성화하거나 비활성화합니다. 버전 19.11 이전에는 granule 크기를 제한하는 설정으로 index_granularity만 있었습니다. index_granularity_bytes 설정은 큰 행(수십~수백 메가바이트)이 있는 테이블에서 데이터를 조회할 때 ClickHouse 성능을 향상합니다. 큰 행이 있는 테이블이 있다면 SELECT 쿼리의 효율을 높이기 위해 해당 테이블에서 이 설정을 활성화할 수 있습니다.

enable_replacing_merge_with_cleanup_for_min_age_to_force_merge

파티션을 하나의 파트로 머지할 때 ReplacingMergeTree에서 CLEANUP 머지를 사용할지 여부입니다. 이 기능을 사용하려면 allow_experimental_replacing_merge_with_cleanup, min_age_to_force_merge_seconds, min_age_to_force_merge_on_partition_only가 활성화되어 있어야 합니다. 가능한 값:
  • true
  • false

enable_the_endpoint_id_with_zookeeper_name_prefix

복제된 MergeTree 테이블에서 ZooKeeper 이름 접두사가 붙은 Endpoint ID를 활성화합니다.

enable_vertical_merge_algorithm

수직 병합 알고리즘을 사용하도록 설정합니다.

enforce_index_structure_match_on_partition_manipulation

파티션 조작 쿼리(ATTACH/MOVE/REPLACE PARTITION)의 대상 테이블에 이 설정을 활성화하면, 원본 테이블과 대상 테이블의 인덱스와 프로젝션이 반드시 동일해야 합니다. 그렇지 않으면 대상 테이블은 원본 테이블의 인덱스와 프로젝션을 모두 포함하는 상위 집합이어도 됩니다.

escape_index_filenames

26.1 이전에는 보조 인덱스용으로 생성된 파일 이름에서 특수 문자를 이스케이프하지 않았기 때문에, 인덱스 이름에 포함된 일부 문자로 인해 손상된 파트가 생성되는 문제가 발생할 수 있었습니다. 이 설정은 순전히 호환성을 위해 추가되었습니다. 이름에 비 ASCII 문자가 포함된 인덱스를 사용하는 오래된 파트를 읽는 경우가 아니라면 변경하지 마십시오.

escape_variant_subcolumn_filenames

MergeTree 테이블의 Wide 파트에서 Variant 데이터 타입 서브컬럼용으로 생성되는 파일 이름의 특수 문자를 이스케이프 처리합니다. 호환성을 위해 필요합니다.

exclude_deleted_rows_for_part_size_in_merge

활성화하면 머지할 파트를 선택할 때 데이터 파트의 예상 실제 크기(DELETE FROM으로 삭제된 행 제외)를 사용합니다. 이 동작은 이 설정을 활성화한 후 실행된 DELETE FROM의 영향을 받은 데이터 파트에서만 트리거됩니다. 가능한 값:
  • true
  • false
관련 항목

exclude_materialize_skip_indexes_on_merge

지정된 쉼표로 구분된 스킵 인덱스 목록이 머지 중에 빌드되고 저장되지 않도록 합니다. materialize_skip_indexes_on_merge가 false이면 이 설정은 적용되지 않습니다. 제외된 스킵 인덱스는 명시적인 MATERIALIZE INDEX 쿼리로, 또는 materialize_skip_indexes_on_insert 세션 설정에 따라 INSERT 중에 계속 빌드되고 저장됩니다. 예시:
CREATE TABLE tab
(
a UInt64,
b UInt64,
INDEX idx_a a TYPE minmax,
INDEX idx_b b TYPE set(3)
)
ENGINE = MergeTree ORDER BY tuple() SETTINGS exclude_materialize_skip_indexes_on_merge = 'idx_a';

INSERT INTO tab SELECT number, number / 50 FROM numbers(100); -- 이 설정은 INSERT에 영향을 미치지 않습니다

-- idx_a는 백그라운드 머지 또는 OPTIMIZE TABLE FINAL을 통한 명시적 머지 시 업데이트에서 제외됩니다

-- 목록을 지정하여 여러 인덱스를 제외할 수 있습니다
ALTER TABLE tab MODIFY SETTING exclude_materialize_skip_indexes_on_merge = 'idx_a, idx_b';

-- 기본 설정이며, 머지 중 업데이트에서 제외되는 인덱스가 없습니다
ALTER TABLE tab MODIFY SETTING exclude_materialize_skip_indexes_on_merge = '';

execute_merges_on_single_replica_time_threshold

이 설정 값이 0보다 크면 하나의 레플리카만 즉시 머지를 시작하고, 다른 레플리카는 로컬에서 머지를 수행하는 대신 그 결과를 다운로드하기 위해 해당 시간까지 대기합니다. 선택된 레플리카가 그 시간 안에 머지를 완료하지 못하면 표준 동작으로 폴백합니다. 가능한 값:
  • 양의 정수.

fault_probability_after_part_commit

테스트용입니다. 변경하지 마십시오.

fault_probability_before_part_commit

테스트용입니다. 변경하지 마세요.

finished_mutations_to_keep

완료된 뮤테이션에 대해 유지할 레코드의 개수입니다. 0이면 모두 유지합니다.

force_read_through_cache_for_merges

머지 시 read-through 파일 시스템 캐시를 강제로 사용합니다

fsync_after_insert

각 삽입 파트에 대해 fsync를 수행합니다. 삽입 성능이 크게 저하되므로 wide 파트와 함께 사용하는 것은 권장하지 않습니다.

fsync_part_directory

모든 파트 작업(쓰기, 이름 변경 등)이 끝난 후 파트 디렉터리에 fsync를 수행합니다.

in_memory_parts_enable_wal

더 이상 사용되지 않는 설정으로, 효과가 없습니다.

in_memory_parts_insert_sync

더 이상 사용되지 않는 설정으로, 아무런 동작도 하지 않습니다.

inactive_parts_to_delay_insert

테이블의 단일 파티션에 있는 비활성 파트 수가 inactive_parts_to_delay_insert 값을 초과하면 INSERT가 인위적으로 지연됩니다.
서버가 파트를 충분히 빠르게 정리하지 못할 때 유용합니다.
가능한 값:
  • 임의의 양의 정수.

inactive_parts_to_throw_insert

단일 파티션에서 비활성 파트 수가 inactive_parts_to_throw_insert 값보다 많으면, INSERT가 다음 오류와 함께 중단됩니다.
“비활성 파트가 너무 많습니다(N). 파트 정리 속도가 삽입 속도보다 현저히 느립니다” 예외.”
가능한 값:
  • 양의 정수 아무거나 가능합니다.

index_granularity

인덱스의 마크 사이에 포함될 수 있는 데이터 행의 최대 개수입니다. 즉, 하나의 프라이머리 키 값에 해당하는 행 수를 나타냅니다.

index_granularity_bytes

데이터 그래뉼의 최대 크기(바이트)입니다. 그래뉼 크기를 행 수만으로 제한하려면 0으로 설정하십시오(권장되지 않음).

initialization_retry_period

테이블 초기화를 재시도하는 주기이며, 초 단위입니다.

kill_delay_period

더 이상 사용되지 않는 설정이며, 아무런 동작도 하지 않습니다.

kill_delay_period_random_add

더 이상 사용되지 않는 설정이며, 아무런 동작도 하지 않습니다.

kill_threads

더 이상 사용되지 않는 설정이며, 아무런 작업도 수행하지 않습니다.

lightweight_mutation_projection_mode

기본적으로 경량한 삭제 DELETE는 프로젝션이 있는 테이블에서는 작동하지 않습니다. 이는 프로젝션의 행이 DELETE 작업의 영향을 받을 수 있기 때문입니다. 따라서 기본값은 throw입니다. 하지만 이 옵션으로 동작 방식을 변경할 수 있습니다. 값을 drop 또는 rebuild로 설정하면 프로젝션이 있는 경우에도 삭제가 작동합니다. drop은 프로젝션을 삭제하므로 현재 쿼리에서는 빠를 수 있지만, 프로젝션이 attached 상태가 아니게 되므로 이후 쿼리에서는 느려질 수 있습니다. rebuild는 프로젝션을 다시 빌드하므로 현재 쿼리의 성능에 영향을 줄 수 있지만, 이후 쿼리에서는 속도를 높일 수 있습니다. 또한 이러한 옵션은 part 수준에서만 작동합니다. 즉, 변경되지 않은 part의 프로젝션은 삭제나 재빌드 같은 작업을 트리거하지 않고 그대로 유지됩니다. 가능한 값:
  • throw
  • drop
  • rebuild

load_existing_rows_count_for_old_parts

exclude_deleted_rows_for_part_size_in_merge와 함께 활성화하면 테이블 시작 시 기존 data part의 삭제된 행 수를 계산합니다. 이 경우 테이블 시작 시 로딩 속도가 느려질 수 있습니다. 가능한 값:
  • true
  • false
관련 항목

lock_acquire_timeout_for_background_operations

머지, 뮤테이션 등의 백그라운드 작업에서 테이블 잠금을 획득하지 못했다고 실패 처리되기까지 대기하는 시간(초)입니다.

map_buckets_coefficient

평균 맵 크기를 기준으로 버킷 수를 계산할 때 sqrtlinear map_buckets_strategy에서 사용하는 계수입니다. sqrt strategy의 경우: round(map_buckets_coefficient * sqrt(avg_map_size)). linear strategy의 경우: round(map_buckets_coefficient * avg_map_size). map_buckets_strategyconstant이면 무시됩니다.

map_buckets_min_avg_size

with_buckets 직렬화를 적용하는 데 필요한 최소 평균 맵 크기(행당 키 수)입니다. 평균 맵 크기가 이 값보다 작으면 다른 버킷 설정과 관계없이 단일 버킷이 사용됩니다. 값이 0이면 임계값이 비활성화되며 버킷팅 전략이 항상 적용됩니다. 이 설정은 효과가 거의 없는 작은 맵에 대해 버킷 단위 직렬화의 오버헤드를 피하는 데 유용합니다.

map_buckets_strategy

평균 맵 크기를 기준으로 with_buckets Map 직렬화에서 버킷 수를 선택하는 전략을 제어합니다. 가능한 값:
  • constant — 평균 맵 크기와 관계없이 항상 max_buckets_in_map을 버킷 수로 사용합니다.
  • sqrt — 버킷 수로 round(map_buckets_coefficient * sqrt(avg_map_size))를 사용하고, 값은 [1, max_buckets_in_map] 범위로 제한됩니다.
  • linear — 버킷 수로 round(map_buckets_coefficient * avg_map_size)를 사용하고, 값은 [1, max_buckets_in_map] 범위로 제한됩니다.

map_serialization_version

Map 컬럼에 사용되는 직렬화 방식을 제어합니다. 가능한 값:
  • basic — Map에 표준 직렬화를 사용합니다.
  • with_buckets — 직렬화 중 키를 버킷으로 나눕니다. 버킷을 사용하면 Map에서 개별 키를 더 효율적으로 읽을 수 있습니다.
with_buckets 직렬화의 버킷 수는 max_buckets_in_mapmap_buckets_strategy에 따라 결정됩니다.

map_serialization_version_for_zero_level_parts

이 설정을 사용하면 삽입 시 생성되는 제로 레벨 파트의 Map 컬럼에 대해 다른 직렬화 버전을 지정할 수 있습니다. 삽입 시 성능 저하를 방지하기 위해 제로 레벨 파트에는 basic 직렬화를 유지하고, 병합된 파트에는 with_buckets를 사용하는 경우에 유용합니다.

marks_compress_block_size

마크 압축 블록 크기입니다. 실제로 압축되는 블록의 크기를 나타냅니다.

marks_compression_codec

마크에 사용되는 압축 인코딩입니다. 마크는 충분히 작고 캐시되므로 기본 압축은 ZSTD(3)입니다.

materialize_skip_indexes_on_merge

활성화하면 머지 시 새 파트에 대한 스키핑 인덱스를 생성하고 저장합니다. 비활성화된 경우에는 명시적인 MATERIALIZE INDEX 또는 INSERT 중에 생성하거나 저장할 수 있습니다. 더 세밀하게 제어하려면 exclude_materialize_skip_indexes_on_merge도 참조하십시오.

materialize_statistics_on_merge

활성화되면 머지 시 새 파트의 통계를 생성하여 저장합니다. 그렇지 않으면 명시적으로 MATERIALIZE STATISTICS를 실행하거나 INSERT 시 생성 및 저장할 수 있습니다.

materialize_ttl_recalculate_only

MATERIALIZE TTL 실행 시에만 TTL 정보를 다시 계산합니다

max_avg_part_size_for_too_many_parts

‘parts_to_delay_insert’ 및 ‘parts_to_throw_insert’에 따른 ‘too many parts’ 검사는 해당 파티션의 평균 파트 크기가 지정된 임계값보다 크지 않은 경우에만 활성화됩니다. 평균 파트 크기가 지정된 임계값보다 크면 INSERT는 지연되거나 거부되지 않습니다. 따라서 파트가 더 큰 파트로 성공적으로 머지된다면 단일 서버의 단일 테이블에 수백 테라바이트의 데이터를 저장할 수 있습니다. 이는 비활성 파트 또는 전체 파트 수에 대한 임계값에는 영향을 주지 않습니다.

max_buckets_in_map

Map 직렬화의 최대 버킷 수입니다. 이 설정은 with_buckets Map 직렬화에 적용됩니다. 실제 버킷 수는 map_buckets_strategy에 따라 결정됩니다. 허용되는 최대값은 256입니다.

max_bytes_to_merge_at_max_space_in_pool

사용 가능한 리소스가 충분할 때 여러 파트를 하나의 파트로 머지할 수 있는 최대 총 크기(바이트)입니다. 이는 자동 백그라운드 머지로 생성될 수 있는 최대 파트 크기에 대략 해당합니다. (0은 머지가 비활성화됨을 의미합니다) 가능한 값:
  • 0 이상의 임의의 정수.
머지 스케줄러는 주기적으로 파티션 내 파트의 크기와 개수를 분석하고, 풀에 충분한 여유 리소스가 있으면 백그라운드 머지를 시작합니다. 소스 파트의 총 크기가 max_bytes_to_merge_at_max_space_in_pool보다 커질 때까지 머지가 수행됩니다. OPTIMIZE FINAL에 의해 시작된 머지는 max_bytes_to_merge_at_max_space_in_pool를 무시합니다(여유 디스크 공간만 고려됩니다).

max_bytes_to_merge_at_min_space_in_pool

background pool에서 사용 가능한 리소스가 최소일 때, 여러 파트를 하나의 파트로 머지할 수 있는 최대 총 크기(바이트)입니다. 가능한 값:
  • 모든 양의 정수.
max_bytes_to_merge_at_min_space_in_pool은 사용 가능한 디스크 공간이 부족한 경우에도 머지할 수 있는 파트의 최대 총 크기(풀 내)를 정의합니다. 이 설정은 작은 파트 수를 줄이고 Too many parts 오류가 발생할 가능성을 낮추는 데 필요합니다. 머지는 병합되는 파트 전체 크기의 2배에 해당하는 디스크 공간을 예약합니다. 따라서 여유 디스크 공간이 적으면, 사용 가능한 공간이 있더라도 그 공간이 이미 진행 중인 대규모 머지에 예약되어 있어 다른 머지를 시작할 수 없고, 삽입이 이루어질 때마다 작은 파트 수가 계속 늘어나는 상황이 발생할 수 있습니다.

max_cleanup_delay_period

오래된 큐 로그, 블록 해시 및 파트를 정리하기 위한 최대 주기입니다.

max_compress_block_size

테이블에 쓰기 위해 압축하기 전에, 비압축 데이터 블록의 최대 크기입니다. 이 설정은 전역 설정에서도 지정할 수 있습니다 (max_compress_block_size 설정 참조). 테이블을 생성할 때 지정한 값은 이 설정의 전역 값보다 우선합니다.

max_concurrent_queries

MergeTree 테이블과 관련된 동시에 실행되는 쿼리의 최대 개수입니다. 쿼리에는 다른 max_concurrent_queries 설정에 따른 제한도 적용됩니다. 가능한 값:
  • 양의 정수.
  • 0 — 제한 없음.
기본값: 0 (제한 없음). 예시
<max_concurrent_queries>50</max_concurrent_queries>

max_delay_to_insert

단일 파티션의 활성 파트 수가 parts_to_delay_insert 값을 초과할 때 INSERT 지연을 계산하는 데 사용되는 초 단위 값입니다. 가능한 값:
  • 양의 정수.
INSERT 지연 시간(밀리초)은 다음 공식으로 계산됩니다:
max_k = parts_to_throw_insert - parts_to_delay_insert
k = 1 + parts_count_in_partition - parts_to_delay_insert
delay_milliseconds = pow(max_delay_to_insert * 1000, k / max_k)
예를 들어, 파티션에 활성 파트가 299개 있고 parts_to_throw_insert = 300, parts_to_delay_insert = 150, max_delay_to_insert = 1인 경우, INSERTpow( 1 * 1000, (1 + 299 - 150) / (300 - 150) ) = 1000 밀리초만큼 지연됩니다. 버전 23.1부터는 수식이 다음과 같이 변경되었습니다:
allowed_parts_over_threshold = parts_to_throw_insert - parts_to_delay_insert
parts_over_threshold = parts_count_in_partition - parts_to_delay_insert + 1
delay_milliseconds = max(min_delay_to_insert_ms, (max_delay_to_insert * 1000)
* parts_over_threshold / allowed_parts_over_threshold)
예를 들어, 파티션에 활성 파트가 224개 있고 parts_to_throw_insert = 300, parts_to_delay_insert = 150, max_delay_to_insert = 1, min_delay_to_insert_ms = 10이면, INSERTmax( 10, 1 * 1000 * (224 - 150 + 1) / (300 - 150) ) = 500밀리초만큼 지연됩니다.

max_delay_to_mutate_ms

완료되지 않은 뮤테이션이 많을 때 뮤테이션 중인 MergeTree 테이블의 최대 지연 시간(밀리초)입니다.

max_digestion_size_per_segment

더 이상 사용되지 않는 설정으로, 아무런 동작도 하지 않습니다.

max_file_name_length

해시로 대체하지 않고 파일 이름을 그대로 유지할 수 있는 최대 길이입니다. replace_long_file_name_to_hash 설정이 활성화되어 있을 때만 적용됩니다. 이 설정값에는 파일 확장자의 길이가 포함되지 않습니다. 따라서 파일 시스템 오류를 방지할 수 있도록 여유를 두고 최대 파일 이름 길이(일반적으로 255 바이트)보다 낮게 설정하는 것이 좋습니다.

max_files_to_modify_in_alter_columns

수정(삭제, 추가)해야 하는 파일 수가 이 설정값보다 크면 ALTER를 적용하지 않습니다. Possible values:
  • 임의의 양의 정수.
기본값: 75

max_files_to_remove_in_alter_columns

삭제할 파일 수가 이 설정값보다 많으면 ALTER를 적용하지 않습니다. 가능한 값:
  • 임의의 양의 정수.

max_merge_delayed_streams_for_parallel_write

병렬로 플러시할 수 있는 최대 스트림(컬럼) 수입니다 (max_insert_delayed_streams_for_parallel_write의 머지 버전). 수직 병합에만 적용됩니다.

max_merge_selecting_sleep_ms

선택된 파트가 없었던 경우, 머지할 파트를 다시 선택하려고 시도하기 전에 대기하는 최대 시간입니다. 이 설정값이 낮을수록 background_schedule_pool에서 선택 작업이 더 자주 트리거되며, 그 결과 대규모 클러스터에서 ZooKeeper로 전송되는 요청 수가 많아집니다.

max_number_of_merges_with_ttl_in_pool

풀에서 TTL 항목이 있는 머지 수가 지정된 값을 초과하면 새로운 TTL 머지를 할당하지 않습니다. 이는 일반 머지를 위해 여유 스레드를 남겨 두고 “Too many parts”를 방지하기 위한 것입니다.

max_number_of_mutations_for_replica

각 레플리카의 파트 뮤테이션 수를 지정한 개수로 제한합니다. 0은 레플리카당 뮤테이션 수에 제한이 없음을 의미합니다(실행은 여전히 다른 설정의 영향을 받을 수 있습니다).

max_part_loading_threads

더 이상 사용되지 않는 설정으로, 아무런 동작도 하지 않습니다.

max_part_removal_threads

더 이상 사용되지 않는 설정으로, 아무런 동작도 하지 않습니다.

max_partitions_to_read

하나의 쿼리에서 액세스할 수 있는 파티션의 최대 수를 제한합니다. table 생성 시 지정한 설정 값은 쿼리 수준 설정으로 재정의할 수 있습니다. 가능한 값:
  • 임의의 양의 정수.
쿼리 / session / profile 수준에서 쿼리 복잡도 설정 max_partitions_to_read도 지정할 수 있습니다.

max_parts_in_total

테이블의 모든 파티션에 걸쳐 활성 파트의 총수가 max_parts_in_totalINSERTToo many parts (N) 예외와 함께 중단됩니다. Possible values:
  • 임의의 양의 정수
테이블에 파트가 너무 많으면 ClickHouse 쿼리 성능이 저하되고 ClickHouse 시작 시간도 늘어납니다. 이는 대부분 잘못된 설계 (파티셔닝 전략 선택 실수 - 지나치게 작은 파티션)로 인해 발생합니다.

max_parts_to_merge_at_once

한 번에 머지할 수 있는 파트의 최대 개수입니다(0이면 비활성화). OPTIMIZE FINAL 쿼리에는 영향을 미치지 않습니다.

max_postpone_time_for_failed_mutations_ms

실패한 뮤테이션에 대해 연기할 수 있는 최대 시간입니다.

max_postpone_time_for_failed_replicated_fetches_ms

실패한 복제 fetch 작업의 최대 연기 시간입니다.

max_postpone_time_for_failed_replicated_merges_ms

실패한 복제된 머지 작업의 최대 연기 시간입니다.

max_postpone_time_for_failed_replicated_tasks_ms

실패한 복제 작업의 최대 연기 시간입니다. 해당 작업이 fetch, 머지 또는 뮤테이션이 아닌 경우 이 값이 사용됩니다.

max_projections

MergeTree 프로젝션의 최대 수입니다.

max_replicated_fetches_network_bandwidth

복제된 fetch 작업의 네트워크를 통한 데이터 전송 속도의 최대값을 초당 바이트 수 기준으로 제한합니다. 이 설정은 서버에 적용되는 max_replicated_fetches_network_bandwidth_for_server 설정과 달리 특정 테이블에 적용됩니다. 서버 전체 네트워크와 특정 테이블의 네트워크를 모두 제한할 수 있지만, 이 경우 테이블 수준 설정값은 서버 수준 설정값보다 작아야 합니다. 그렇지 않으면 서버는 max_replicated_fetches_network_bandwidth_for_server 설정만 적용합니다. 이 설정값이 항상 완벽하게 정확히 지켜지는 것은 아닙니다. 가능한 값:
  • 양의 정수.
  • 0 — 무제한.
기본값: 0. 사용법 새 노드를 추가하거나 교체하기 위해 데이터를 복제할 때 속도를 스로틀링하는 데 사용할 수 있습니다.

max_replicated_logs_to_keep

비활성 레플리카가 있을 때 ClickHouse Keeper 로그에 포함될 수 있는 레코드 수입니다. 이 수를 초과하면 비활성 레플리카는 손실된 것으로 간주됩니다. 가능한 값:
  • 임의의 양의 정수.

max_replicated_merges_in_queue

ReplicatedMergeTree 큐에서 파트를 머지하거나 변경하는 작업을 동시에 몇 개까지 허용할지 지정합니다.

max_replicated_merges_with_ttl_in_queue

ReplicatedMergeTree 큐에서 TTL이 있는 파트의 머지 작업을 동시에 몇 개까지 허용할 수 있는지 나타냅니다.

max_replicated_mutations_in_queue

ReplicatedMergeTree 큐에서 파트를 변경하는 작업을 동시에 최대 몇 개까지 허용할지 지정합니다.

max_replicated_sends_network_bandwidth

복제된 전송의 경우, 네트워크를 통한 데이터 교환 속도를 초당 바이트 단위로 제한합니다. 이 설정은 서버에 적용되는 max_replicated_sends_network_bandwidth_for_server 설정과 달리 특정 테이블에 적용됩니다. 서버 네트워크와 특정 테이블의 네트워크를 모두 제한할 수 있지만, 이 경우 테이블 수준 설정값은 서버 수준 설정값보다 작아야 합니다. 그렇지 않으면 서버는 max_replicated_sends_network_bandwidth_for_server 설정만 적용합니다. 이 설정은 완전히 정확하게 준수되지는 않습니다. 가능한 값:
  • 양의 정수.
  • 0 — 무제한.
사용법 새 노드를 추가하거나 교체할 때 데이터를 복제하는 속도에 스로틀링을 적용하는 데 사용할 수 있습니다.

max_suspicious_broken_parts

하나의 파티션에서 손상된 파트 수가 max_suspicious_broken_parts 값을 초과하면 자동 삭제가 허용되지 않습니다. 가능한 값:
  • 모든 양의 정수.

max_suspicious_broken_parts_bytes

손상된 모든 파트의 최대 총 크기입니다. 이 값을 초과하면 자동 삭제가 허용되지 않습니다. Possible values:
  • 임의의 양의 정수.

max_uncompressed_bytes_in_patches

모든 patch part에 있는 데이터의 최대 압축되지 않은 크기(바이트)입니다. 모든 patch part의 데이터 양이 이 값을 초과하면 경량 업데이트가 거부됩니다. 0 - 무제한입니다.

merge_max_block_size

병합된 파트에서 메모리로 읽어오는 행 수입니다. 가능한 값:
  • 모든 양의 정수.
머지는 파트에서 merge_max_block_size행씩 블록 단위로 읽은 다음, 이를 병합하여 새 파트에 씁니다. 읽기 블록은 RAM에 적재되므로, merge_max_block_size는 머지에 필요한 RAM 크기에 영향을 줍니다. 따라서 행이 매우 wide한 테이블에서는 머지가 많은 양의 RAM을 사용할 수 있습니다 (평균 행 크기가 100kb이고 10개의 파트를 머지하는 경우, (100kb * 10 * 8192) = 약 8GB의 RAM). merge_max_block_size를 줄이면 머지에 필요한 RAM 사용량은 줄일 수 있지만 머지 속도는 느려집니다.

merge_max_block_size_bytes

머지 작업 시 형성할 블록의 바이트 수입니다. 기본값은 index_granularity_bytes와 같습니다.

merge_max_bytes_to_prewarm_cache

ClickHouse Cloud에서만 사용할 수 있습니다. 머지 중 캐시를 예열할 파트(compact 또는 패킹)의 최대 크기입니다.

merge_max_dynamic_subcolumns_in_compact_part

머지 후 Compact 데이터 파트의 각 컬럼에서 생성될 수 있는 동적 서브컬럼의 최대 개수입니다. 데이터 타입에 지정된 동적 매개변수와 관계없이 Compact part의 동적 서브컬럼 수를 제어할 수 있습니다. 예를 들어, 테이블에 JSON(max_dynamic_paths=1024) 타입의 컬럼이 있고 merge_max_dynamic_subcolumns_in_compact_part 설정이 128로 지정된 경우, Compact 데이터 파트로 머지된 후 이 파트의 동적 경로 수는 128로 줄어들며 128개의 경로만 동적 서브컬럼으로 기록됩니다.

merge_max_dynamic_subcolumns_in_wide_part

머지 후 각 컬럼의 Wide 데이터 파트에서 생성할 수 있는 동적 서브컬럼의 최대 개수입니다. 이 설정을 사용하면 데이터 타입에 지정된 매개변수와 관계없이 Wide 데이터 파트에서 생성되는 파일 수를 줄일 수 있습니다. 예를 들어 테이블에 JSON(max_dynamic_paths=1024) 타입의 컬럼이 있고 설정 merge_max_dynamic_subcolumns_in_wide_part가 128로 설정되어 있으면, Wide 데이터 파트로 머지된 후 이 파트의 동적 경로 수는 128로 줄어들며 128개의 경로만 동적 서브컬럼으로 저장됩니다.

merge_selecting_sleep_ms

선택할 머지 파트가 없었던 경우, 다시 머지할 파트를 선택하기 전에 대기하는 최소 시간입니다. 이 설정값이 낮을수록 background_schedule_pool에서 선택 작업이 더 자주 트리거되며, 그 결과 대규모 클러스터에서는 ZooKeeper에 대한 요청이 많이 발생합니다.

merge_selecting_sleep_slowdown_factor

머지 선택 작업의 대기 시간은 머지할 항목이 없으면 이 계수를 곱하고, 머지가 할당되면 이 계수로 나눕니다

merge_selector_algorithm

머지 할당용 파트를 선택하는 알고리즘

merge_selector_base

할당된 머지의 쓰기 증폭에 영향을 미칩니다(전문가 수준의 설정이므로, 어떻게 동작하는지 이해하지 못한다면 변경하지 마십시오). Simple 및 StochasticSimple 머지 선택기에 적용됩니다

merge_selector_blurry_base_scale_factor

파티션의 파트 수를 기준으로 이 로직이 언제 적용되기 시작할지를 제어합니다. 계수가 클수록 반응이 더 늦어집니다.

merge_selector_enable_heuristic_to_lower_max_parts_to_merge_at_once

단순 머지 선택기에서 머지 대상으로 선택할 수 있는 최대 한도를 낮추는 휴리스틱을 활성화합니다. 이렇게 하면 동시에 수행되는 머지 수가 늘어나 TOO_MANY_PARTS 오류를 완화하는 데 도움이 될 수 있지만, 그만큼 쓰기 증폭도 증가합니다.

merge_selector_enable_heuristic_to_remove_small_parts_at_right

크기가 sum_size의 지정된 비율(0.01)보다 작은 파트를 범위의 오른쪽 끝에서 제거하도록, 머지할 파트를 선택하는 휴리스틱을 활성화합니다. Simple 및 StochasticSimple 머지 선택기에서 작동합니다.

merge_selector_heuristic_to_lower_max_parts_to_merge_at_once_exponent

하향 곡선을 구성하는 공식에 사용되는 지수 값을 제어합니다. 이 지수 값을 낮추면 머지 폭이 줄어들어 쓰기 증폭이 증가합니다. 반대로 지수 값을 높이면 그 반대 효과가 나타납니다.

merge_selector_window_size

한 번에 확인할 파트 수입니다.

merge_total_max_bytes_to_prewarm_cache

ClickHouse Cloud에서만 사용할 수 있습니다. 머지 중 캐시를 예열할 때 대상이 되는 파트의 총 최대 크기입니다.

merge_tree_clear_old_broken_detached_parts_ttl_timeout_seconds

더 이상 사용되지 않는 설정으로, 아무런 동작도 하지 않습니다.

merge_tree_clear_old_parts_interval_seconds

ClickHouse가 오래된 파트, WAL 및 뮤테이션을 정리하는 작업을 실행하는 인터벌을 초 단위로 설정합니다. 가능한 값:
  • 양의 정수.

merge_tree_clear_old_temporary_directories_interval_seconds

ClickHouse가 오래된 임시 디렉터리를 정리하는 작업을 실행하는 시간 간격을 초 단위로 설정합니다. 가능한 값:
  • 임의의 양의 정수.

merge_tree_enable_clear_old_broken_detached

더 이상 사용되지 않는 설정으로, 아무 동작도 하지 않습니다.

merge_with_recompression_ttl_timeout

재압축 recompression TTL이 적용된 머지를 다시 수행하기 전까지의 최소 지연 시간(초)입니다.

merge_with_ttl_timeout

delete TTL이 적용된 머지를 다시 수행하기 전 필요한 최소 대기 시간(초)입니다.

merge_workload

머지와 다른 워크로드 간에 리소스가 사용되고 공유되는 방식을 조절하는 데 사용됩니다. 지정된 값은 이 테이블의 백그라운드 머지에 대한 workload 설정 값으로 사용됩니다. 지정하지 않으면(빈 문자열) 대신 서버 설정 merge_workload가 사용됩니다. 관련 항목

min_absolute_delay_to_close

닫고, 요청 처리를 중단하며, 상태 확인 중 Ok를 반환하지 않기까지의 최소 절대 지연입니다.

min_age_to_force_merge_on_partition_only

min_age_to_force_merge_seconds를 부분 집합이 아니라 전체 파티션에만 적용할지 여부입니다. 기본적으로 max_bytes_to_merge_at_max_space_in_pool 설정은 무시됩니다(enable_max_bytes_limit_for_min_age_to_force_merge 참조). 가능한 값:
  • true, false

min_age_to_force_merge_seconds

범위 내의 모든 파트가 min_age_to_force_merge_seconds 값보다 오래된 경우 파트를 머지합니다. 기본적으로 max_bytes_to_merge_at_max_space_in_pool 설정을 무시합니다 (enable_max_bytes_limit_for_min_age_to_force_merge 참조). Possible values:
  • 양의 정수.

min_bytes_for_compact_part

더 이상 사용되지 않는 설정으로, 아무런 동작도 하지 않습니다.

min_bytes_for_full_part_storage

ClickHouse Cloud에서만 사용할 수 있습니다. 패킹 대신 데이터 파트에 전체 스토리지 유형을 사용하기 위한 최소 압축되지 않은 크기(바이트)입니다.

min_bytes_for_wide_part

Wide 포맷으로 저장할 수 있는 데이터 파트의 최소 바이트 수 또는 행 수입니다. 이 설정은 하나만 지정할 수도 있고, 둘 다 지정할 수도 있으며, 둘 다 지정하지 않을 수도 있습니다.

min_bytes_to_prewarm_caches

새 파트의 마크 캐시와 프라이머리 인덱스 캐시를 예열하기 위한 최소 크기(비압축 바이트 수)

min_bytes_to_rebalance_partition_over_jbod

JBOD 볼륨 디스크에 새로운 대용량 파트를 분산할 때 밸런싱을 활성화하는 최소 바이트 수를 설정합니다. Possible values:
  • 양의 정수입니다.
  • 0 — 밸런싱이 비활성화됩니다.
사용법 min_bytes_to_rebalance_partition_over_jbod 설정값은 max_bytes_to_merge_at_max_space_in_pool / 1024 값보다 작으면 안 됩니다. 그렇지 않으면 ClickHouse에서 예외가 발생합니다.

min_columns_to_activate_adaptive_write_buffer

적응형 쓰기 버퍼를 사용해 컬럼이 많은 테이블의 메모리 사용량을 줄일 수 있게 합니다. 가능한 값:
  • 0 - 제한 없음
  • 1 - 항상 활성화

min_compress_block_size

다음 mark를 기록할 때 압축을 수행하는 데 필요한 비압축 데이터 block의 최소 크기입니다. 이 설정은 전역 설정에서도 지정할 수 있습니다 (min_compress_block_size 설정 참조). 테이블 생성 시 지정한 값은 이 설정의 전역 값을 재정의합니다.

min_compressed_bytes_to_fsync_after_fetch

fetch 후 파트에 대해 fsync를 수행할 최소 compressed 바이트 수입니다(0이면 비활성화됨).

min_compressed_bytes_to_fsync_after_merge

머지 후 파트에 fsync를 수행할 최소 압축 바이트 수(0 - 비활성화)

min_delay_to_insert_ms

단일 파티션에 머지되지 않은 파트가 많을 경우, MergeTree 테이블에 데이터를 삽입할 때의 최소 지연 시간(밀리초)입니다.

min_delay_to_mutate_ms

미완료된 뮤테이션이 많은 경우, MergeTree 테이블에서 뮤테이션을 수행하기까지의 최소 지연 시간(밀리초)입니다

min_free_disk_bytes_to_perform_insert

데이터를 삽입하려면 디스크 공간에 확보되어 있어야 하는 최소 바이트 수입니다. 사용 가능한 여유 바이트 수가 min_free_disk_bytes_to_perform_insert보다 적으면 예외가 발생하고 삽입은 실행되지 않습니다. 이 설정은 다음과 같습니다.
  • keep_free_space_bytes 설정을 고려합니다.
  • INSERT 작업으로 기록될 데이터의 양은 고려하지 않습니다.
  • 양수(0이 아닌) 바이트 수가 지정된 경우에만 확인됩니다.
Possible values:
  • 임의의 양의 정수.
min_free_disk_bytes_to_perform_insertmin_free_disk_ratio_to_perform_insert 가 모두 지정된 경우, ClickHouse는 삽입 수행에 필요한 최소 여유 디스크 공간이 더 큰 값을 기준으로 판단합니다.

min_free_disk_ratio_to_perform_insert

INSERT를 수행하기 위해 필요한 전체 디스크 공간 대비 최소 여유 디스크 공간 비율입니다. 값은 0과 1 사이의 부동소수점 값이어야 합니다. 이 설정에는 다음과 같은 특징이 있습니다.
  • keep_free_space_bytes 설정을 고려합니다.
  • INSERT 작업으로 실제로 기록될 데이터의 양은 고려하지 않습니다.
  • 양수(0이 아닌) 비율이 지정된 경우에만 검사됩니다.
가능한 값:
  • Float, 0.0 - 1.0
min_free_disk_ratio_to_perform_insertmin_free_disk_bytes_to_perform_insert가 모두 지정된 경우, ClickHouse는 더 많은 여유 디스크 공간에서 삽입을 수행할 수 있도록 하는 값을 기준으로 판단합니다.

min_index_granularity_bytes

데이터 그래뉼의 허용 가능한 최소 크기(바이트)입니다. 실수로 index_granularity_bytes가 매우 낮은 테이블을 생성하는 일을 방지하기 위한 안전장치입니다.

min_level_for_full_part_storage

ClickHouse Cloud에서만 사용할 수 있습니다. 데이터 파트에 대해 패킹 대신 full 타입의 저장소를 사용하기 위한 최소 part level입니다.

min_level_for_wide_part

데이터 파트를 Compact 대신 Wide 포맷으로 생성하기 위한 최소 파트 수준입니다.

min_marks_to_honor_max_concurrent_queries

max_concurrent_queries 설정을 적용할 때 쿼리가 읽는 최소 마크 수입니다.
쿼리는 여전히 다른 max_concurrent_queries 설정의 제한을 받습니다.
가능한 값:
  • 양의 정수
  • 0 — 비활성화됨(max_concurrent_queries 제한이 어떤 쿼리에도 적용되지 않음)
예시
<min_marks_to_honor_max_concurrent_queries>10</min_marks_to_honor_max_concurrent_queries>

min_merge_bytes_to_use_direct_io

스토리지 디스크에 직접 I/O 액세스를 사용하기 위해 필요한 머지 작업의 최소 데이터 크기입니다. 데이터 파트를 머지할 때 ClickHouse는 머지할 모든 데이터의 총 스토리지 크기를 계산합니다. 이 크기가 min_merge_bytes_to_use_direct_io바이트를 초과하면 ClickHouse는 직접 I/O 인터페이스(O_DIRECT 옵션)를 사용해 스토리지 디스크에서 데이터를 읽고 씁니다. min_merge_bytes_to_use_direct_io = 0이면 직접 I/O가 비활성화됩니다.

min_parts_to_merge_at_once

머지 선택기가 한 번에 머지 대상으로 선택할 수 있는 데이터 파트(data parts)의 최소 개수입니다. (전문가 수준의 설정이므로, 동작을 이해하지 못하면 변경하지 마십시오.) 0 - 비활성화됩니다. Simple 및 StochasticSimple 머지 선택기에서 동작합니다.

min_relative_delay_to_close

다른 레플리카와의 지연이 이 값 이상이면 닫히고, 요청 처리를 중단하며, status check에서 Ok를 반환하지 않습니다.

min_relative_delay_to_measure

절대 지연이 이 값 이상인 경우에만 상대 레플리카 지연을 계산합니다.

리더십 양보를 위한 최소 상대 지연 시간

더 이상 사용되지 않는 설정으로, 아무런 동작도 하지 않습니다.

min_replicated_logs_to_keep

오래되어 더 이상 사용되지 않더라도 ZooKeeper 로그의 마지막 레코드를 대략 이 개수만큼 유지합니다. 이 설정은 테이블 동작에는 영향을 주지 않으며, 정리 전에 ZooKeeper 로그를 진단할 때만 사용됩니다. 가능한 값:
  • 모든 양의 정수.

min_rows_for_compact_part

더 이상 사용되지 않는 설정으로, 아무런 동작도 하지 않습니다.

min_rows_for_full_part_storage

ClickHouse Cloud에서만 사용할 수 있습니다. 데이터 파트에 패킹 스토리지 대신 full 타입의 저장소를 사용하기 위한 최소 행 수입니다.

min_rows_for_wide_part

Compact 대신 Wide 포맷의 데이터 파트(data part)를 생성하기 위한 최소 행 수입니다.

min_rows_to_fsync_after_merge

머지 후 파트에 fsync를 수행하기 위한 최소 행 수입니다(0이면 비활성화).

mutation_workload

뮤테이션과 다른 워크로드 간에 리소스가 사용되고 공유되는 방식을 제어하는 데 사용됩니다. 지정된 값은 이 테이블의 백그라운드 뮤테이션에 대한 workload 설정값으로 사용됩니다. 지정하지 않은 경우(빈 문자열)에는 서버 설정 mutation_workload가 대신 사용됩니다. 관련 항목

non_replicated_deduplication_window

비복제 MergeTree 테이블에서 중복 여부를 확인하기 위해 해시 합을 저장하는 가장 최근에 삽입된 블록 수입니다. 가능한 값:
  • 임의의 양의 정수.
  • 0 (중복 제거 비활성화).
복제된 테이블(Replicated Table)과 유사한 중복 제거 메커니즘이 사용됩니다(참조: replicated_deduplication_window 설정). 생성된 파트의 해시 합은 디스크의 로컬 파일에 기록됩니다.

notify_newest_block_number

최신 블록 번호를 SharedJoin 또는 SharedSet에 알립니다. ClickHouse Cloud에서만 지원됩니다.

nullable_serialization_version

Nullable(T) 컬럼에 사용되는 직렬화 메서드를 제어합니다. 가능한 값:
  • basic — Nullable(T)에 표준 직렬화를 사용합니다.
  • allow_sparse — Nullable(T)에서 희소 인코딩 사용을 허용합니다.

number_of_free_entries_in_pool_to_execute_mutation

풀에 지정된 수보다 사용 가능한 항목이 적으면 파트 뮤테이션을 실행하지 않습니다. 이는 일반적인 머지를 위한 여유 스레드를 확보하고 “Too many parts” 오류를 방지하기 위한 것입니다. 가능한 값:
  • 모든 양의 정수.
사용 number_of_free_entries_in_pool_to_execute_mutation 설정 값은 background_pool_size 값과 다음 값의 곱보다 작아야 합니다.

number_of_free_entries_in_pool_to_execute_optimize_entire_partition

풀에 지정된 수보다 사용 가능한 엔트리가 적으면, 백그라운드에서 전체 파티션 최적화를 실행하지 않습니다(이 작업은 min_age_to_force_merge_seconds를 설정하고 min_age_to_force_merge_on_partition_only를 활성화하면 생성됩니다). 이는 일반적인 머지를 위한 여유 스레드를 확보하고 “Too many parts”를 방지하기 위한 것입니다. 가능한 값:
  • 양의 정수.
number_of_free_entries_in_pool_to_execute_optimize_entire_partition 설정값은 다음 값보다 작아야 합니다. background_pool_size

number_of_free_entries_in_pool_to_lower_max_size_of_merge

풀(또는 복제된 큐)에서 사용 가능한 빈 항목 수가 지정된 수보다 적어지면, 처리할 머지의 최대 크기(또는 큐에 넣을 머지의 최대 크기)를 낮추기 시작합니다. 이 설정은 오래 실행되는 머지로 풀이 가득 차는 것을 방지하여, 작은 머지를 처리할 수 있도록 하기 위한 것입니다. 가능한 값:
  • 모든 양의 정수.

number_of_mutations_to_delay

테이블에 완료되지 않은 뮤테이션이 이 수 이상 있으면 테이블의 뮤테이션 속도를 인위적으로 늦춥니다. 0으로 설정하면 비활성화됩니다

number_of_mutations_to_throw

테이블에 완료되지 않은 뮤테이션이 이 수 이상 있으면 ‘Too many mutations’ 예외를 발생시킵니다. 0으로 설정하면 비활성화됩니다.

number_of_partitions_to_consider_for_merge

ClickHouse Cloud에서만 사용할 수 있습니다. 머지 대상으로 고려할 최대 상위 N개의 파티션입니다. 파티션은 무작위 가중 방식으로 선택되며, 가중치는 해당 파티션에서 머지할 수 있는 데이터 파트의 개수입니다.

object_serialization_version

JSON 데이터 타입의 직렬화 버전입니다. 호환성을 위해 필요합니다. 가능한 값:
  • v1
  • v2
  • v3
공유 데이터 직렬화 버전 변경은 v3 버전에서만 지원됩니다.

object_shared_data_buckets_for_compact_part

Compact 파트에서 JSON 공유 데이터 직렬화에 사용할 버킷 수입니다. map_with_bucketsadvanced 공유 데이터 직렬화에서 사용됩니다. 허용되는 최대값은 256입니다.

object_shared_data_buckets_for_wide_part

Wide 파트의 JSON 공유 데이터 직렬화에 사용하는 버킷 수입니다. map_with_bucketsadvanced 공유 데이터 직렬화와 함께 사용됩니다. 허용되는 최대값은 256입니다.

object_shared_data_serialization_version

JSON 데이터 타입 내 공유 데이터에 사용하는 직렬화 버전입니다. 가능한 값:
  • map - 공유 데이터를 Map(String, String)으로 저장합니다.
  • map_with_buckets - 공유 데이터를 여러 개의 개별 Map(String, String) 컬럼으로 저장합니다. 버킷을 사용하면 공유 데이터에서 개별 경로를 더 효율적으로 읽을 수 있습니다.
  • advanced - 공유 데이터에서 개별 경로를 읽는 성능을 크게 향상하도록 설계된 공유 데이터용 특수 serialization입니다. 이 serialization은 많은 추가 정보를 저장하므로 디스크의 공유 데이터 저장 크기가 증가합니다.
map_with_bucketsadvanced serialization의 버킷 수는 다음 설정으로 결정됩니다. object_shared_data_buckets_for_compact_part/object_shared_data_buckets_for_wide_part.

object_shared_data_serialization_version_for_zero_level_parts

이 설정을 사용하면 삽입 중 생성되는 zero level 파트에 대해 JSON 타입 내부의 공유 데이터에 서로 다른 직렬화 버전을 지정할 수 있습니다. advanced 공유 데이터 serialization은 삽입 시간이 크게 늘어날 수 있으므로 zero level 파트에는 사용하지 않는 것이 좋습니다.

old_parts_lifetime

예기치 않은 서버 재부팅 중 데이터 손실을 방지하기 위해 비활성 파트를 저장하는 시간(초)입니다. 가능한 값:
  • 임의의 양의 정수.
여러 파트를 새 파트로 머지한 후 ClickHouse는 원래 파트들을 비활성으로 표시하고 old_parts_lifetime초가 지난 후에만 삭제합니다. 비활성 파트는 현재 쿼리에서 사용되지 않는 경우, 즉 파트의 refcount가 1인 경우 제거됩니다. 새 파트에 대해서는 fsync가 호출되지 않으므로, 일정 시간 동안 새 파트는 서버의 RAM(OS 캐시)에만 존재합니다. 서버가 예기치 않게 재부팅되면 새 파트가 손실되거나 손상될 수 있습니다. 데이터를 보호하기 위해 비활성 파트는 즉시 삭제되지 않습니다. 시작 시 ClickHouse는 파트의 무결성을 확인합니다. 병합된 파트가 손상된 경우 ClickHouse는 비활성 파트들을 다시 활성 목록으로 되돌린 후 나중에 다시 머지합니다. 그런 다음 손상된 파트의 이름을 변경하고(broken_ 접두사를 추가) detached 폴더로 이동합니다. 병합된 파트가 손상되지 않은 경우에는 원래의 비활성 파트들의 이름을 변경하고(ignored_ 접두사를 추가) detached 폴더로 이동합니다. 기본 dirty_expire_centisecs 값(리눅스 커널 설정)은 30 초(RAM에만 기록된 데이터가 저장되는 최대 시간)이지만, 디스크 시스템에 부하가 큰 경우 데이터는 훨씬 나중에 기록될 수 있습니다. 실험적으로 old_parts_lifetime에는 480초가 선택되었으며, 이 시간 동안 새 파트가 디스크에 기록되는 것이 보장됩니다.

optimize_row_order

새로 삽입된 테이블 파트의 압축 효율을 높이기 위해 삽입 중 행 순서를 최적화할지 제어합니다. 일반적인 MergeTree 엔진 테이블에서만 효과가 있습니다. 특수한 MergeTree 엔진 테이블(예: CollapsingMergeTree)에는 적용되지 않습니다. MergeTree 테이블은 선택적으로 압축 코덱을 사용해 압축됩니다. LZ4 및 ZSTD와 같은 범용 압축 코덱은 데이터에 패턴이 있을 때 최대 압축률을 얻을 수 있습니다. 같은 값이 길게 반복되는 구간은 일반적으로 매우 잘 압축됩니다. 이 설정을 활성화하면 ClickHouse는 새로 삽입된 파트의 데이터를, 새 테이블 파트의 컬럼 전반에서 동일한 값이 연속되는 구간 수를 최소화하는 행 순서로 저장하려고 시도합니다. 즉, 동일한 값이 연속되는 구간 수가 적을수록 각 구간이 길어져 압축이 더 잘됩니다. 최적의 행 순서를 찾는 것은 계산적으로 실현 불가능합니다(NP-hard). 따라서 ClickHouse는 휴리스틱을 사용해 원래 행 순서보다 압축률을 개선할 수 있는 행 순서를 빠르게 찾습니다. 활성화하면 새 데이터의 행 순서를 분석하고 최적화하기 위한 추가 CPU 비용이 삽입 작업에 발생합니다. 데이터 특성에 따라 INSERT는 3050% 더 오래 걸릴 수 있습니다. LZ4 또는 ZSTD의 압축률은 평균적으로 2040% 향상됩니다. 이 설정은 프라이머리 키가 없거나 카디널리티가 낮은 프라이머리 키, 즉 고유한 프라이머리 키 값이 적은 테이블에서 가장 효과적입니다. 예를 들어 DateTime64 유형의 timestamp 컬럼이 포함된 경우처럼 카디널리티가 높은 프라이머리 키에는 이 설정의 효과를 기대하기 어렵습니다.

part_minmax_index_columns

part별 MinMax 인덱스가 어떤 컬럼을 포함할지 선택합니다. 각 값은 이전 값에 더해 추가 컬럼 그룹을 활성화합니다. 가능한 값:
  • partition_key_only — 파티션 키 컬럼만 추적합니다.
  • with_block_number_offset — 파티션 키 컬럼에 더해 저장된 _block_number_block_offset 가상 컬럼도 추적합니다. 이 컬럼을 기준으로 part 단위 프루닝을 수행할 수 있습니다.

part_moves_between_shards_delay_seconds

세그먼트 간 파트 이동 전후의 대기 시간입니다.

part_moves_between_shards_enable

세그먼트 간에 파트를 이동하기 위한 실험적/미완성 기능입니다. 세그먼트 분할 표현식은 고려하지 않습니다.

parts_to_delay_insert

단일 파티션의 활성 파트 수가 parts_to_delay_insert 값을 초과하면 INSERT가 인위적으로 지연됩니다. Possible values:
  • 양의 정수라면 무엇이든 가능합니다.
ClickHouse는 INSERT 실행 시간을 인위적으로 늘려(‘sleep’ 추가) 백그라운드 머지 프로세스가 파트가 추가되는 속도보다 더 빠르게 파트를 머지할 수 있도록 합니다.

parts_to_throw_insert

단일 파티션에서 활성 파트 수가 parts_to_throw_insert 값을 초과하면, INSERTToo many parts (N). Merges are processing significantly slower than inserts 예외와 함께 중단됩니다. 가능한 값:
  • 모든 양의 정수.
SELECT 쿼리의 성능을 최대화하려면 처리되는 파트 수를 최소화해야 합니다. 자세한 내용은 Merge Tree를 참조하십시오. 23.6 버전 이전에는 이 설정값이 300이었습니다. 더 높은 값으로 설정하면 Too many parts 오류가 발생할 가능성은 줄어들지만, 동시에 SELECT 성능이 저하될 수 있습니다. 또한 머지 문제(예: 디스크 공간 부족)가 발생한 경우에도 원래 값인 300을 사용할 때보다 이를 더 늦게 알아차리게 됩니다.

prefer_fetch_merged_part_size_threshold

파트 크기의 합이 이 임계값을 초과하고 복제 로그 항목이 생성된 후 경과 시간이 prefer_fetch_merged_part_time_threshold보다 길면, 로컬에서 머지하는 대신 레플리카에서 병합된 파트를 가져오는 방식을 우선합니다. 이는 매우 오래 걸리는 머지 작업의 속도를 높이기 위한 것입니다. 가능한 값:
  • 임의의 양의 정수.

prefer_fetch_merged_part_time_threshold

복제 로그(ClickHouse Keeper 또는 ZooKeeper) 항목이 생성된 후 경과한 시간이 이 임계값을 초과하고, 파트 크기의 합이 prefer_fetch_merged_part_size_threshold보다 크면, 로컬에서 머지를 수행하는 대신 레플리카에서 병합된 파트를 가져오는 방식을 우선적으로 선택합니다. 이는 매우 오래 걸리는 머지 속도를 높이기 위한 것입니다. 가능한 값:
  • 모든 양의 정수.

prewarm_mark_cache

true인 경우 마크가 마크 캐시에 저장되어 삽입, 머지, fetch 작업 시와 서버 시작 시 마크 캐시가 예열됩니다

prewarm_primary_key_cache

true이면 삽입, 머지, fetch 및 서버 시작 시 마크를 마크 캐시에 저장하여 프라이머리 인덱스 캐시를 예열합니다

primary_key_compress_block_size

프라이머리 압축 블록 크기입니다. 실제로 압축되는 블록의 크기를 나타냅니다.

primary_key_compression_codec

프라이머리 키(primary key)에 사용되는 압축 코덱입니다. 프라이머리 키는 충분히 작고 캐시되므로 기본 압축 방식은 ZSTD(3)입니다.

primary_key_lazy_load

테이블 초기화 시점이 아니라 처음 사용할 때 프라이머리 키를 메모리에 로드합니다. 이는 테이블이 매우 많을 때 메모리를 절약하는 데 도움이 될 수 있습니다.

primary_key_ratio_of_unique_prefix_values_to_skip_suffix_columns

데이터 파트(data part)에서 프라이머리 키(primary key)의 특정 컬럼 값이 적어도 이 비율만큼 변경되면, 뒤이은 컬럼은 메모리에 로드하지 않습니다. 이렇게 하면 프라이머리 키의 불필요한 컬럼을 로드하지 않아 메모리 사용량을 절약할 수 있습니다.

propagate_types_serialization_versions_to_nested_types

true이면 string_serialization_version과 같은 직렬화 버전이 Array/Map/Nullable/JSON 등의 중첩 타입 내부로 전파됩니다. 비활성화하면 직렬화 버전은 이 타입의 최상위 컬럼과 Tuple el에만 적용됩니다

ratio_of_defaults_for_sparse_serialization

컬럼에서 기본값의 개수가 전체 값의 개수에서 차지해야 하는 최소 비율입니다. 이 값을 설정하면 해당 컬럼은 희소 직렬화(serialization)를 사용해 저장됩니다. 컬럼이 희소한 경우(대부분의 값이 0인 경우) ClickHouse는 이를 희소 포맷으로 인코딩하고 계산을 자동으로 최적화할 수 있습니다. 즉, 데이터는 쿼리 중에 전체 압축 해제를 할 필요가 없습니다. 이 희소 직렬화를 활성화하려면 ratio_of_defaults_for_sparse_serialization 설정을 1.0보다 작은 값으로 지정하십시오. 값이 1.0보다 크거나 같으면 컬럼은 항상 일반적인 전체 직렬화를 사용해 기록됩니다. Possible values:
  • 희소 직렬화를 활성화하려면 01 사이의 Float 값
  • 희소 직렬화를 사용하지 않으려면 1.0(또는 그 이상)
예시 다음 테이블에서 s 컬럼은 행의 95%에서 빈 문자열입니다. my_regular_table에서는 희소 직렬화를 사용하지 않고, my_sparse_table에서는 ratio_of_defaults_for_sparse_serialization을 0.95로 설정합니다:
CREATE TABLE my_regular_table
(
`id` UInt64,
`s` String
)
ENGINE = MergeTree
ORDER BY id;

INSERT INTO my_regular_table
SELECT
number AS id,
number % 20 = 0 ? toString(number): '' AS s
FROM
numbers(10000000);

CREATE TABLE my_sparse_table
(
`id` UInt64,
`s` String
)
ENGINE = MergeTree
ORDER BY id
SETTINGS ratio_of_defaults_for_sparse_serialization = 0.95;

INSERT INTO my_sparse_table
SELECT
number,
number % 20 = 0 ? toString(number): ''
FROM
numbers(10000000);
my_sparse_tables 컬럼은 디스크에서 차지하는 저장 공간이 더 적습니다:
SELECT table, name, data_compressed_bytes, data_uncompressed_bytes FROM system.columns
WHERE table LIKE 'my_%_table';
┌─table────────────┬─name─┬─data_compressed_bytes─┬─data_uncompressed_bytes─┐
│ my_regular_table │ id   │              37790741 │                75488328 │
│ my_regular_table │ s    │               2451377 │                12683106 │
│ my_sparse_table  │ id   │              37790741 │                75488328 │
│ my_sparse_table  │ s    │               2283454 │                 9855751 │
└──────────────────┴──────┴───────────────────────┴─────────────────────────┘
컬럼이 희소 인코딩을 사용하는지 여부는 system.parts_columns 테이블의 serialization_kind 컬럼을 확인하여 검증할 수 있습니다:
SELECT column, serialization_kind FROM system.parts_columns
WHERE table LIKE 'my_sparse_table';
s에서 어느 부분이 희소 직렬화로 저장되었는지 확인할 수 있습니다:
┌─column─┬─serialization_kind─┐
│ id     │ Default            │
│ s      │ Default            │
│ id     │ Default            │
│ s      │ Default            │
│ id     │ Default            │
│ s      │ Sparse             │
│ id     │ Default            │
│ s      │ Sparse             │
│ id     │ Default            │
│ s      │ Sparse             │
│ id     │ Default            │
│ s      │ Sparse             │
│ id     │ Default            │
│ s      │ Sparse             │
│ id     │ Default            │
│ s      │ Sparse             │
│ id     │ Default            │
│ s      │ Sparse             │
│ id     │ Default            │
│ s      │ Sparse             │
│ id     │ Default            │
│ s      │ Sparse             │
└────────┴────────────────────┘

reduce_blocking_parts_sleep_ms

ClickHouse Cloud에서만 사용할 수 있습니다. 범위가 삭제되거나 대체되지 않은 경우, blocking 파트를 다시 줄이기 전에 대기하는 최소 시간입니다. 이 설정을 낮추면 background_schedule_pool의 작업이 자주 트리거되어, 대규모 클러스터에서는 ZooKeeper로의 요청이 많이 발생합니다.

refresh_parts_interval

0보다 크면, 내부에서 데이터가 업데이트되었는지 확인하기 위해 기반이 되는 파일 시스템에서 데이터 파트 목록을 갱신합니다. 테이블이 읽기 전용 디스크에 있는 경우에만 설정할 수 있습니다(즉, 다른 레플리카가 데이터를 쓰는 동안 이 레플리카는 읽기 전용 레플리카여야 합니다).

refresh_statistics_interval

통계 캐시 갱신 주기(초)입니다. 0으로 설정하면 갱신이 비활성화됩니다.

remote_fs_execute_merges_on_single_replica_time_threshold

이 설정 값이 0보다 크면, 공유 스토리지에 병합된 파트가 있는 경우 하나의 레플리카만 즉시 머지를 시작합니다.
zero-copy 복제는 production 환경에서 사용할 준비가 되어 있지 않습니다. ClickHouse 버전 22.8 이상에서는 zero-copy 복제가 기본적으로 비활성화되어 있습니다.이 기능은 production 환경에서 사용하는 것을 권장하지 않습니다.
가능한 값:
  • 임의의 양의 정수.

remote_fs_zero_copy_path_compatible_mode

변환 과정에서 zero-copy를 호환 모드로 실행합니다.

remote_fs_zero_copy_zookeeper_path

zero-copy의 테이블 비종속 정보에 대한 ZooKeeper 경로입니다.

remove_empty_parts

TTL, mutation 또는 축약 머지 알고리즘으로 걸러진 후 비어 있는 파트를 제거합니다.

remove_rolled_back_parts_immediately

완성되지 않은 실험적 기능을 위한 설정입니다.

remove_unused_patch_parts

모든 활성 파트에 적용된 patch part를 백그라운드 작업으로 제거합니다.

replace_long_file_name_to_hash

컬럼의 파일 이름이 너무 길면(‘max_file_name_length’ 바이트 초과) 파일 이름을 SipHash128로 대체합니다

replicated_can_become_leader

true이면 이 노드의 복제된 테이블 레플리카가 리더 역할을 획득하려고 시도합니다. Possible values:
  • true
  • false

replicated_deduplication_window

중복 여부를 확인하기 위해 ClickHouse Keeper가 해시 합을 저장하는 가장 최근에 삽입된 블록 수입니다. 가능한 값:
  • 임의의 양의 정수
  • 0 (중복 제거 비활성화)
Insert 명령은 하나 이상의 블록(파트)을 생성합니다. 삽입 중복 제거의 경우, 복제된 테이블에 쓸 때 ClickHouse는 생성된 파트의 해시 합을 ClickHouse Keeper에 기록합니다. 해시 합은 가장 최근의 replicated_deduplication_window개 블록에 대해서만 저장됩니다. 가장 오래된 해시 합은 ClickHouse Keeper에서 제거됩니다. replicated_deduplication_window 값이 크면 비교해야 하는 항목이 더 많아지므로 Inserts 속도가 느려집니다. 해시 합은 필드 이름과 타입의 구성, 그리고 삽입된 파트의 데이터(바이트 스트림)로부터 계산됩니다.

replicated_deduplication_window_for_async_inserts

ClickHouse Keeper가 중복 여부를 확인하기 위해 해시 합을 저장하는, 가장 최근 async 삽입 블록의 수입니다. 가능한 값:
  • 임의의 양의 정수
  • 0 (async_inserts의 중복 제거 비활성화)
Async Insert 명령은 하나 이상의 블록(파트)으로 캐시됩니다. 삽입 중복 제거를 위해 복제된 테이블(Replicated Table)에 기록할 때 ClickHouse는 각 삽입의 해시 합을 ClickHouse Keeper에 기록합니다. 해시 합은 가장 최근 replicated_deduplication_window_for_async_inserts개 블록에 대해서만 저장됩니다. 가장 오래된 해시 합은 ClickHouse Keeper에서 제거됩니다. replicated_deduplication_window_for_async_inserts 값이 크면 비교해야 하는 항목이 더 많아지므로 Async Inserts가 느려집니다. 해시 합은 필드 이름과 타입의 구성, 그리고 삽입 데이터(바이트 스트림)를 기준으로 계산됩니다.

replicated_deduplication_window_seconds

삽입된 블록의 해시 합이 ClickHouse Keeper에서 제거되기까지의 시간(초)입니다. 가능한 값:
  • 임의의 양의 정수.
replicated_deduplication_window와 유사하게, replicated_deduplication_window_seconds는 삽입 중복 제거를 위해 블록의 해시 합을 얼마나 오래 저장할지 지정합니다. replicated_deduplication_window_seconds보다 오래된 해시 합은 replicated_deduplication_window보다 작더라도 ClickHouse Keeper에서 제거됩니다. 이 시간은 실제 시각이 아니라 가장 최근 레코드의 시각을 기준으로 계산됩니다. 해당 레코드가 유일한 레코드라면 영구적으로 저장됩니다.

replicated_deduplication_window_seconds_for_async_inserts

비동기 삽입(async inserts)의 해시 합이 ClickHouse Keeper에서 제거되기까지 걸리는 시간(초)입니다. 가능한 값:
  • 모든 양의 정수.
replicated_deduplication_window_for_async_inserts와 마찬가지로, replicated_deduplication_window_seconds_for_async_inserts는 비동기 삽입 중복 제거를 위해 블록의 해시 합을 얼마 동안 저장할지 지정합니다. replicated_deduplication_window_seconds_for_async_inserts보다 오래된 해시 합은 replicated_deduplication_window_for_async_inserts보다 작더라도 ClickHouse Keeper에서 제거됩니다. 이 시간은 실제 경과 시간이 아니라 가장 최근 레코드의 시간을 기준으로 계산됩니다. 레코드가 하나뿐이면 영구적으로 저장됩니다.

replicated_fetches_http_connection_timeout

더 이상 사용되지 않는 설정으로, 아무런 동작도 하지 않습니다.

replicated_fetches_http_receive_timeout

더 이상 사용되지 않는 설정이며, 아무 동작도 하지 않습니다.

replicated_fetches_http_send_timeout

더 이상 사용되지 않는 설정으로, 아무런 동작도 하지 않습니다.

replicated_fetches_min_part_level

다른 레플리카에서 가져올 파트의 최소 수준입니다. 이 임계값보다 낮은 수준의 파트는 지연되며 (영구적으로 건너뛰는 것이 아니라 복제 큐에 유지되고 각 스케줄링 사이클마다 다시 평가됩니다). 1을 사용하면 수준 0의 파트(머지되지 않음) 가져오기를 지연하여, 대량 수집 중 복제 오버헤드를 줄일 수 있습니다. 기본값: 0(수준과 관계없이 모든 파트를 가져옵니다).

replicated_fetches_min_part_level_timeout_seconds

이 시간이 지나면 replicated_fetches_min_part_level보다 낮은 파트도 가져옵니다(초 단위). 0을 사용하면 제한 시간이 비활성화됩니다(최소 수준보다 낮은 파트는 머지될 때까지 무기한 연기됩니다). 기본값: 300(5분 후 강제로 가져옵니다).

replicated_max_mutations_in_one_entry

하나의 MUTATE_PART 엔트리에서 함께 머지되어 실행될 수 있는 뮤테이션 명령의 최대 개수입니다 (0은 무제한을 의미합니다)

replicated_max_parallel_fetches

더 이상 사용되지 않는 설정으로, 아무런 동작도 하지 않습니다.

replicated_max_parallel_fetches_for_host

더 이상 사용되지 않는 설정으로, 아무런 동작도 하지 않습니다.

replicated_max_parallel_fetches_for_table

더 이상 사용되지 않는 설정이며, 아무런 효과가 없습니다.

replicated_max_parallel_sends

더 이상 사용되지 않는 설정으로, 아무런 동작도 하지 않습니다.

replicated_max_parallel_sends_for_table

더 이상 사용되지 않는 설정으로, 아무런 동작도 하지 않습니다.

replicated_max_ratio_of_wrong_parts

잘못된 파트 수의 비율이 전체 파트 수 대비 이 값보다 작으면 - 시작을 허용합니다. 가능한 값:
  • Float, 0.0 - 1.0

search_orphaned_parts_disks

ClickHouse는 정책에 포함되지 않은 정의되지 않은 디스크의 데이터 파트를 놓치지 않도록, ATTACH 또는 CREATE 테이블이 수행될 때마다 모든 디스크에서 고아 파트를 검색합니다. 고아 파트는 잠재적으로 안전하지 않은 스토리지 재구성으로 인해 발생하며, 예를 들어 디스크가 스토리지 정책에서 제외된 경우가 이에 해당합니다. 이 설정은 디스크의 특성에 따라 검색할 디스크 범위를 제한합니다. 가능한 값:
  • any - 범위가 제한되지 않습니다.
  • local - 범위가 로컬 디스크로 제한됩니다.
  • none - 범위가 비어 있으며, 검색하지 않습니다

serialization_info_version

serialization.json을 작성할 때 사용하는 직렬화 정보 버전입니다. 이 설정은 클러스터(cluster) 업그레이드 중 호환성을 유지하는 데 필요합니다. 가능한 값:
  • basic - 기본 포맷입니다.
  • with_types - 추가 types_serialization_versions 필드가 포함된 포맷으로, 타입별 직렬화 버전을 사용할 수 있습니다. 이 설정을 사용하면 string_serialization_version 같은 설정이 적용됩니다.
롤링 업그레이드 중에는 새 server가 이전 server와 호환되는 데이터 파트(파트)를 생성하도록 이 값을 basic으로 설정하십시오. 업그레이드가 완료되면 타입별 직렬화 버전을 활성화하려면 WITH_TYPES로 전환하십시오.

share_nested_offsets

활성화되면(기본값) 공통 접두사를 공유하는 점 표기 이름의 배열(Array) 컬럼(예: n.a 및 n.b)은 Nested 구조의 일부로 처리됩니다. 이들은 디스크에서 하나의 offsets 파일(예: n.size0)을 공유하며, INSERT 시 배열 크기가 동일한지 검증됩니다. 비활성화되면 각 배열(Array) 컬럼은 자체적인 독립 offset 파일을 가지며, 점 표기 이름은 더 이상 특별한 의미를 갖지 않습니다. 또한 동일한 접두사를 공유하는 점 표기 배열(Array) 컬럼과 스칼라 컬럼이 함께 존재할 수 있습니다 (예: n UInt32와 n.a Array(String)). 이 설정은 테이블 생성 후에는 변경할 수 없습니다.

shared_merge_tree_activate_coordinated_merges_tasks

조정된 머지 작업의 재스케줄링을 활성화합니다. shared_merge_tree_enable_coordinated_merges=0인 경우에도 머지 코디네이터 통계가 채워지도록 하여 콜드 스타트에 도움이 되므로 유용할 수 있습니다.

shared_merge_tree_create_per_replica_metadata_nodes

ZooKeeper에서 레플리카별 /metadata/columns 노드를 생성하도록 활성화합니다. ClickHouse Cloud에서만 사용할 수 있습니다.

shared_merge_tree_disable_merges_and_mutations_assignment

shared merge tree의 머지 및 뮤테이션 할당을 중지합니다. ClickHouse Cloud에서만 사용할 수 있습니다.

shared_merge_tree_empty_partition_lifetime

파트가 없는 파티션을 Keeper에 몇 초 동안 저장할지 지정합니다.

shared_merge_tree_enable_automatic_empty_partitions_cleanup

빈 파티션에 대한 Keeper 항목 정리를 활성화합니다.

shared_merge_tree_enable_coordinated_merges

조정된 머지 전략을 사용하도록 설정합니다

shared_merge_tree_enable_keeper_parts_extra_data

virtual parts에 속성을 기록하고 Keeper에서 블록을 커밋하는 기능을 활성화합니다

shared_merge_tree_enable_outdated_parts_check

오래된 파트 확인을 활성화합니다. ClickHouse Cloud에서만 사용할 수 있습니다

shared_merge_tree_idle_parts_update_seconds

shared merge tree에서 ZooKeeper watch로 트리거되지 않을 때 파트를 업데이트하는 인터벌(초)입니다. ClickHouse Cloud에서만 사용할 수 있습니다.

shared_merge_tree_initial_parts_update_backoff_ms

파트 업데이트의 초기 백오프입니다. ClickHouse Cloud에서만 사용할 수 있습니다.

shared_merge_tree_interserver_http_connection_timeout_ms

서버 간 HTTP 연결의 timeout입니다. ClickHouse Cloud에서만 사용할 수 있습니다.

shared_merge_tree_interserver_http_timeout_ms

서버 간 HTTP 통신의 timeout입니다. ClickHouse Cloud에서만 사용할 수 있습니다.

shared_merge_tree_leader_update_period_random_add_seconds

shared_merge_tree_leader_update_period에 0초부터 x초까지의 균등 분포 값을 추가하여 thundering herd 현상을 방지합니다. ClickHouse Cloud에서만 사용할 수 있습니다.

shared_merge_tree_leader_update_period_seconds

파트 업데이트의 리더를 다시 확인하는 최대 주기입니다. ClickHouse Cloud에서만 사용할 수 있습니다.

shared_merge_tree_max_outdated_parts_to_process_at_once

리더가 한 번의 HTTP 요청으로 제거 확인을 시도할 수 있는 오래된 파트의 최대 개수입니다. ClickHouse Cloud에서만 사용할 수 있습니다.

shared_merge_tree_max_parts_update_backoff_ms

파트 업데이트의 최대 백오프입니다. ClickHouse Cloud에서만 사용할 수 있습니다

shared_merge_tree_max_parts_update_leaders_in_total

파트 업데이트 리더의 최대 개수입니다. ClickHouse Cloud에서만 사용할 수 있습니다.

shared_merge_tree_max_parts_update_leaders_per_az

파트 업데이트 리더의 최대 개수입니다. ClickHouse Cloud에서만 사용할 수 있습니다

shared_merge_tree_max_replicas_for_parts_deletion

파트 삭제(killer thread)에 참여하는 최대 레플리카 수입니다. ClickHouse Cloud에서만 사용할 수 있습니다

shared_merge_tree_max_replicas_to_merge_parts_for_each_parts_range

잠재적으로 충돌할 수 있는 머지를 할당하려고 시도하는 최대 레플리카 수입니다(머지 할당 시 불필요한 충돌을 방지할 수 있습니다). 0은 비활성화를 의미합니다. ClickHouse Cloud에서만 사용할 수 있습니다.

shared_merge_tree_max_suspicious_broken_parts

SMT의 손상된 파트 최대 개수입니다. 이를 초과하면 자동 detach를 허용하지 않습니다.

shared_merge_tree_max_suspicious_broken_parts_bytes

SMT에서 손상된 모든 파트의 최대 크기입니다. 이 값을 초과하면 자동 detach가 거부됩니다.

shared_merge_tree_memo_ids_remove_timeout_seconds

삽입 재시도 중 잘못된 동작을 방지하기 위해 삽입 메모이제이션 ID를 얼마나 오래 저장할지 지정합니다. ClickHouse Cloud에서만 사용할 수 있습니다.

shared_merge_tree_merge_coordinator_election_check_period_ms

머지 코디네이터 선출 스레드의 실행 간격

shared_merge_tree_merge_coordinator_factor

코디네이터 스레드 지연 시간의 변경 계수

shared_merge_tree_merge_coordinator_fetch_fresh_metadata_period_ms

머지 코디네이터가 최신 메타데이터를 가져오기 위해 ZooKeeper와 동기화하는 주기

shared_merge_tree_merge_coordinator_max_merge_request_size

코디네이터가 MergerMutator에 한 번에 요청할 수 있는 머지 개수

shared_merge_tree_merge_coordinator_max_period_ms

머지 코디네이터 스레드 실행 사이의 최대 시간

shared_merge_tree_merge_coordinator_merges_prepare_count

코디네이터가 준비하여 workers에 분배해야 하는 머지 항목 수입니다. ‘auto’로 설정하면 활성 레플리카 수에 단일 레플리카에서 허용되는 최대 머지 작업 수를 곱한 값과 같습니다.

shared_merge_tree_merge_coordinator_min_period_ms

머지 코디네이터 스레드 실행 사이의 최소 시간

shared_merge_tree_merge_worker_fast_timeout_ms

즉시 작업 후 상태를 업데이트해야 하는 경우 머지 worker 스레드가 사용하는 timeout입니다

shared_merge_tree_merge_worker_regular_timeout_ms

merge worker 스레드 실행 사이의 시간

shared_merge_tree_outdated_parts_group_size

오래된 파트 정리 시 동일한 rendezvous hash 그룹에 포함되는 레플리카 수입니다. ClickHouse Cloud에서만 사용할 수 있습니다.

shared_merge_tree_partitions_hint_ratio_to_reload_merge_pred_for_mutations

<뮤테이션 전용 후보 파티션(머지할 수 없는 파티션)>/<뮤테이션 후보 파티션> 비율이 이 설정값보다 높으면, 머지/뮤테이션 선택 작업에서 머지 프레디케이트를 다시 로드합니다. ClickHouse Cloud에서만 사용할 수 있습니다.

shared_merge_tree_parts_load_batch_size

한 번에 예약할 fetch 파트 메타데이터 job 수입니다. ClickHouse Cloud에서만 사용할 수 있습니다.

shared_merge_tree_postpone_next_merge_for_locally_merged_parts_ms

로컬에서 병합된 파트를 포함하는 새 머지를 시작하지 않고 해당 파트를 유지하는 시간입니다. 다른 레플리카가 이 파트를 fetch하고 해당 머지를 시작할 수 있는 시간을 제공합니다. ClickHouse Cloud에서만 사용할 수 있습니다.

shared_merge_tree_postpone_next_merge_for_locally_merged_parts_rows_threshold

로컬에서 파트를 머지한 직후 다음 머지가 할당되는 시점을 늦추기 위한 파트의 최소 크기(행 수)입니다. ClickHouse Cloud에서만 사용할 수 있습니다.

shared_merge_tree_range_for_merge_window_size

이 파트를 포함하는 새 머지를 시작하지 않은 상태에서 로컬에서 병합된 파트를 유지하는 시간입니다. 다른 레플리카가 이 파트를 가져와 이 머지를 시작할 수 있도록 합니다. ClickHouse Cloud에서만 사용할 수 있습니다.

shared_merge_tree_read_virtual_parts_from_leader

가능하면 리더에서 가상 파트를 읽습니다. ClickHouse Cloud에서만 사용할 수 있습니다.

shared_merge_tree_replica_set_max_lifetime_seconds

레플리카가 백그라운드에서 레플리카 세트를 업데이트하려고 시도하는 간격입니다. 다음 실행 시점에는 [0, value]초 범위에서 균등하게 지터가 적용됩니다. 예외: value = 0에는 이 규칙이 적용되지 않습니다; 구현상 최소 200ms를 적용하므로 다음 실행 시점에는 [0, 200]ms 범위에서 지터가 적용됩니다.

shared_merge_tree_try_fetch_part_in_memory_data_from_replicas

활성화하면 모든 레플리카가 이미 해당 데이터가 있는 다른 레플리카에서 파트의 인메모리 데이터(프라이머리 키, 파티션 정보 등)를 가져오려고 시도합니다.

shared_merge_tree_update_replica_flags_delay_ms

백그라운드 스케줄에 따라 레플리카 플래그를 다시 로드하려고 시도하는 간격입니다.

shared_merge_tree_use_metadata_hints_cache

다른 레플리카의 메모리 내 캐시에서 FS 캐시 힌트를 요청하도록 설정합니다. ClickHouse Cloud에서만 사용할 수 있습니다.

shared_merge_tree_use_outdated_parts_compact_format

오래된 파트에 compact 포맷을 사용합니다. Keeper 부하를 줄이고 오래된 파트 처리를 개선합니다. ClickHouse Cloud에서만 사용할 수 있습니다

shared_merge_tree_use_too_many_parts_count_from_virtual_parts

활성화하면 Too many parts 카운터는 로컬 레플리카 상태가 아니라 Keeper의 공유 데이터를 사용합니다. ClickHouse Cloud에서만 사용할 수 있습니다.

shared_merge_tree_use_zookeeper_connection_pool

활성화하면 SharedMergeTree는 서버 수준에서 풀링된 ZooKeeper 세션 중 하나를 사용합니다.

shared_merge_tree_virtual_parts_discovery_batch

하나의 배치에 패킹할 파티션 디스커버리 개수

simultaneous_parts_removal_limit

오래된 파트가 많으면 정리 스레드가 한 번의 반복에서 최대 simultaneous_parts_removal_limit개의 파트를 삭제합니다. simultaneous_parts_removal_limit0으로 설정하면 제한이 없음을 의미합니다.

sleep_before_commit_local_part_in_replicated_table_ms

테스트용입니다. 변경하지 마십시오.

sleep_before_loading_outdated_parts_ms

테스트용입니다. 변경하지 마십시오.

storage_policy

스토리지 디스크 정책 이름

string_serialization_version

최상위 String 컬럼의 직렬화 포맷을 제어합니다. 이 설정은 serialization_info_version이 “with_types”로 설정된 경우에만 적용됩니다. with_size_stream으로 설정하면 최상위 String 컬럼은 문자열 길이를 저장하는 별도의 .size 서브컬럼으로 직렬화되며, 인라인으로 저장되지 않습니다. 이렇게 하면 실제 .size 서브컬럼을 사용할 수 있고 압축 효율도 향상될 수 있습니다. 중첩된 String 타입(Nullable, LowCardinality, Array, Map 내부 등)은 Tuple 안에 나타나는 경우를 제외하면 영향을 받지 않습니다. 가능한 값:
  • single_stream — 인라인 크기를 사용하는 표준 직렬화 포맷을 사용합니다.
  • with_size_stream — 최상위 String 컬럼에 별도의 크기 스트림을 사용합니다.

table_disk

테이블 디스크를 의미하며, 경로/엔드포인트는 데이터베이스 데이터가 아니라 테이블 데이터를 가리켜야 합니다. s3_plain/s3_plain_rewritable/web에서만 설정할 수 있습니다.

table_readonly

true로 설정하면 테이블이 읽기 전용 모드로 전환됩니다. 데이터를 삽입하거나 테이블을 수정하려는 모든 시도는 실패합니다.

temporary_directories_lifetime

tmp_ 디렉터리를 몇 초 동안 유지할지 지정합니다. 이 값은 낮추지 마십시오. 이 설정값이 너무 낮으면 머지와 뮤테이션이 정상적으로 작동하지 않을 수 있습니다.

try_fetch_recompressed_part_timeout

재압축을 동반한 머지를 시작하기 전까지의 timeout(초)입니다. 이 시간 동안 ClickHouse는 재압축을 동반한 이 머지가 할당된 레플리카로부터 재압축된 파트를 fetch하려고 시도합니다. 대부분의 경우 재압축은 느리므로, 이 timeout이 지나기 전까지는 재압축을 동반한 머지를 시작하지 않고, 재압축을 동반한 이 머지가 할당된 레플리카로부터 재압축된 파트를 fetch하려고 시도합니다. Possible values:
  • 임의의 양의 정수.

ttl_only_drop_parts

TTL 설정에 따라 해당 파트의 모든 행이 만료되었을 때, MergeTree 테이블에서 데이터 파트 전체를 삭제할지 여부를 제어합니다. ttl_only_drop_parts가 비활성화된 경우(기본값)에는 TTL 설정에 따라 만료된 행만 삭제됩니다. ttl_only_drop_parts가 활성화된 경우에는 해당 파트의 모든 행이 TTL 설정에 따라 만료되면 파트 전체가 삭제됩니다.

use_adaptive_write_buffer_for_dynamic_subcolumns

동적 서브컬럼을 쓸 때 적응형 쓰기 버퍼를 사용해 메모리 사용량을 줄일 수 있도록 합니다.

use_async_block_ids_cache

true이면 async 삽입의 해시 합을 캐시합니다. 가능한 값:
  • true
  • false
여러 async 삽입을 포함하는 block은 여러 개의 해시 합을 생성합니다. 일부 삽입이 중복되면 Keeper는 하나의 RPC에서 중복된 해시 합 하나만 반환합니다. 이로 인해 불필요한 RPC 재시도가 발생합니다. 이 캐시는 Keeper의 해시 합 경로를 watch합니다. Keeper에서 업데이트가 watch되면 캐시는 가능한 한 빨리 업데이트되므로 메모리에서 중복된 삽입을 filter할 수 있습니다.

use_compact_variant_discriminators_serialization

Variant 데이터 타입에서 판별자의 바이너리 직렬화에 compact 모드를 활성화합니다. 이 모드를 사용하면 variant가 대부분 하나이거나 NULL 값이 많은 경우 파트에서 판별자를 저장하는 데 필요한 메모리를 크게 줄일 수 있습니다.

use_const_adaptive_granularity

part 전체에 항상 일정한 세분화 수준을 사용합니다. 이렇게 하면 메모리에서 인덱스 세분화 수준 값을 압축할 수 있습니다. 열 수가 적은 매우 큰 워크로드에서 유용할 수 있습니다.

use_metadata_cache

더 이상 사용되지 않는 설정으로, 아무 작업도 수행하지 않습니다.

use_minimalistic_checksums_in_zookeeper

일반적인 형식(수십 KB) 대신 ZooKeeper의 데이터 파트 체크섬에 작은 포맷(수십 바이트)을 사용합니다. 활성화하기 전에 모든 레플리카가 새 포맷을 지원하는지 확인하십시오.

use_minimalistic_part_header_in_zookeeper

데이터 파트 헤더의 ZooKeeper 저장 방식입니다. 활성화하면 ZooKeeper에 저장되는 데이터 양이 줄어듭니다. 자세한 내용은 여기를 참조하십시오.

use_primary_key_cache

모든 인덱스를 메모리에 저장하는 대신 프라이머리 인덱스에 캐시를 사용합니다. 매우 큰 테이블에 유용할 수 있습니다

vertical_merge_algorithm_min_bytes_to_activate

수직 병합 알고리즘을 활성화하기 위한, 머지되는 파트의 최소(대략적인) 압축되지 않은 크기(바이트 단위)입니다.

vertical_merge_algorithm_min_columns_to_activate

수직 병합 알고리즘을 활성화하는 데 필요한 PK 이외 컬럼의 최소 개수입니다.

vertical_merge_algorithm_min_rows_to_activate

수직 병합 알고리즘을 활성화하는 데 필요한 머지 중인 파트의 최소 (대략적인) 총 행 수입니다.

vertical_merge_optimize_lightweight_delete

true로 설정하면 수직 병합에서 경량한 삭제가 최적화됩니다.

vertical_merge_optimize_ttl_delete

true이면 수직 병합에서 행 TTL 삭제가 최적화됩니다. 수평 병합을 강제하는 대신, TTL 필터를 평가해 머지 알고리즘에 전달하며, 이 알고리즘은 행 소스에 skip 플래그를 설정합니다.

vertical_merge_remote_filesystem_prefetch

true이면 머지 중 다음 컬럼에 대해 원격 파일 시스템의 데이터 프리페치를 사용합니다.

wait_for_unique_parts_send_before_shutdown_ms

종료 전에 테이블은 고유 파트 (현재 레플리카에만 존재하는 파트)를 다른 레플리카가 가져갈 수 있도록 필요한 시간 동안 기다립니다(0은 비활성화됨을 의미합니다).

write_ahead_log_bytes_to_fsync

더 이상 사용되지 않는 설정으로, 아무런 동작도 하지 않습니다.

write_ahead_log_interval_ms_to_fsync

더 이상 사용되지 않는 설정으로, 아무 동작도 하지 않습니다.

write_ahead_log_max_bytes

더 이상 사용되지 않는 설정으로, 아무런 동작도 하지 않습니다.

write_final_mark

더 이상 사용되지 않는 설정으로, 아무 작업도 수행하지 않습니다.

write_marks_for_substreams_in_compact_parts

Compact 파트에서 각 컬럼이 아니라 각 서브스트림마다 마크를 쓰도록 활성화합니다. 이를 통해 데이터 파트에서 개별 서브컬럼을 효율적으로 읽을 수 있습니다. 예를 들어, 컬럼 t Tuple(a String, b UInt32, c Array(Nullable(UInt32))) 는 다음 서브스트림으로 직렬화됩니다:
  • 튜플 요소 a의 String 데이터에 대한 t.a
  • 튜플 요소 b의 UInt32 데이터에 대한 t.b
  • 튜플 요소 c의 배열 크기에 대한 t.c.size0
  • 튜플 요소 c의 중첩 배열 요소에 대한 null 맵에 대한 t.c.null
  • 튜플 요소 c의 중첩 배열 요소에 대한 UInt32 데이터에 대한 t.c
이 설정이 활성화되면 이 5개의 서브스트림 각각에 대해 마크를 쓰므로, 필요할 경우 각 개별 서브스트림의 데이터를 granule에서 별도로 읽을 수 있습니다. 예를 들어 서브컬럼 t.c를 읽으려는 경우, 서브스트림 t.c.size0, t.c.null, t.c의 데이터만 읽고 서브스트림 t.at.b의 데이터는 읽지 않습니다. 이 설정이 비활성화되면, 최상위 컬럼 t에 대해서만 마크를 쓰므로 일부 서브스트림의 데이터만 필요하더라도 항상 granule에서 전체 컬럼 데이터를 읽게 됩니다.

zero_copy_concurrent_part_removal_max_postpone_ratio

더 작은 독립 범위를 얻기 위해 제거를 연기할 최상위 파트의 최대 비율입니다. 변경하지 않는 것이 좋습니다.

zero_copy_concurrent_part_removal_max_split_times

독립적인 오래된 파트 범위를 더 작은 하위 범위로 분할할 때의 최대 재귀 깊이입니다. 변경하지 않는 것을 권장합니다.

zero_copy_merge_mutation_min_parts_size_sleep_before_lock

zero-copy 복제가 활성화된 경우, 머지 또는 mutation 시 파트 크기에 따라 잠금을 시도하기 전에 임의의 시간 동안 대기합니다.

zero_copy_merge_mutation_min_parts_size_sleep_no_scale_before_lock

zero-copy 복제가 활성화된 경우, 머지 또는 mutation 잠금을 시도하기 전에 최대 500ms 범위에서 임의의 시간 동안 대기합니다.

zookeeper_session_expiration_check_period

ZooKeeper 세션 만료 확인 주기이며, 단위는 초입니다. 가능한 값:
  • 임의의 양의 정수.
마지막 수정일 2026년 6월 10일