adaptive_write_buffer_initial_size
add_implicit_sign_column_constraint_for_collapsing_engine
sign 컬럼에 암시적 제약 조건을 추가하여 유효한 값(1 및 -1)만 허용합니다.
alter_column_secondary_index_mode
ALTER 명령을 허용할지와,
허용하는 경우 어떤 작업을 수행할지를 구성합니다. 기본적으로 이러한 ALTER 명령은 허용되며 인덱스가 다시 빌드됩니다.
가능한 값:
rebuild(기본값):ALTER명령에서 해당 컬럼의 영향을 받는 모든 보조 인덱스를 다시 빌드합니다.throw: 예외를 발생시켜 명시적 보조 인덱스가 적용된 컬럼에 대한 모든ALTER를 막습니다. 암시적 인덱스는 이 제한에서 제외되며 다시 빌드됩니다.drop: 종속된 보조 인덱스를 삭제합니다. 새 파트에는 해당 인덱스가 포함되지 않으므로, 다시 생성하려면MATERIALIZE INDEX를 실행해야 합니다.compatibility: 원래 동작과 동일하게 맞춥니다.ALTER ... MODIFY COLUMN에는throw를,ALTER ... UPDATE/DELETE에는rebuild를 적용합니다.ignore: 전문가용 옵션입니다. 인덱스를 불일치한 상태로 남겨 두므로 잘못된 쿼리 결과가 발생할 수 있습니다.
apply_patches_on_merge
assign_part_uuids
auto_statistics_types
minmax 통계 타입은 더 이상 권장되지 않습니다. basic의 부분 집합이므로 대신 basic을 사용해야 합니다.
background_task_preferred_step_execution_time_ms
clean_deleted_rows
clone_replica_zookeeper_create_get_part_batch_size
compatibility_allow_sampling_expression_not_in_primary_key
compute_exact_num_defaults_for_sparse_columns
num_defaults 카운터를 사용하는
optimize_trivial_count_with_sparsity_filter에 필요합니다(널 허용 컬럼은
추가로 nullable_serialization_version = 'allow_sparse'가 필요합니다).
비활성화된 상태로 두면 삽입/머지 속도는 이전과 동일하게 유지되며, 활성화하면
희소 직렬화가 가능한 각 컬럼마다 O(rows) 패스가 추가됩니다.
deduplicate_merge_projection_mode
ignore 옵션은 순전히
compatibility를 위한 것이며, 잘못된 결과를 초래할 수 있습니다. 허용하는 경우에는
프로젝션을 머지할 때 수행할 동작을 지정하며, drop 또는 rebuild 중
하나를 선택합니다. 따라서 클래식 MergeTree에서는 이 설정이 무시됩니다.
또한 OPTIMIZE DEDUPLICATE도 제어하지만, 모든 MergeTree 엔진 계열
구성원에 영향을 미칩니다. lightweight_mutation_projection_mode 옵션과
마찬가지로, 이것도 part 수준입니다.
가능한 값:
ignorethrowdroprebuild
deduplication_hashes_cache_update_wait_ms
deduplication_hashes 캐시가 더 최신 버전으로 갱신될 때까지
대기한 뒤, 이미 삽입된 블록이 있는지 다시 확인하는 시간을 지정합니다. 이 캐시는
ClickHouse Keeper의 deduplication_hashes 디렉터리를 미러링하므로, 삽입 시
Keeper와 왕복 통신하지 않고도 중복을 감지할 수 있습니다.
default_compression_codec
- 테이블 선언에서 해당 컬럼에 정의된 압축 코덱
default_compression_codec에 정의된 압축 코덱(이 설정)compression설정에 정의된 기본 압축 코덱 기본값: 빈 문자열(정의되지 않음)입니다.
디스크
dynamic_serialization_version
v1v2v3
enforce_index_structure_match_on_partition_manipulation
ATTACH/MOVE/REPLACE PARTITION)의 대상 테이블에서 이 설정을 활성화하면, 원본 테이블과 대상 테이블의 인덱스와 프로젝션이
서로 동일해야 합니다. 그렇지 않으면 대상
테이블은 원본 테이블의 인덱스와 프로젝션을 모두 포함하는 상위 집합이어도 됩니다.
execute_merges_on_single_replica_time_threshold
- 양의 정수 아무 값이나 가능합니다.
finished_mutations_to_keep
force_read_through_cache_for_merges
initialization_retry_period
kill_threads
lightweight_mutation_projection_mode
DELETE는 프로젝션이 있는 테이블에서는 작동하지 않습니다. 이는 프로젝션의 행이 DELETE 작업의 영향을 받을 수 있기 때문입니다. 따라서 기본값은 throw입니다. 하지만 이 옵션을 사용하면 동작 방식을 변경할 수 있습니다. 값이 drop 또는 rebuild이면 프로젝션이 있는 테이블에서도 삭제가 작동합니다. drop은 프로젝션을 삭제하므로 현재 쿼리에서는 프로젝션이 제거되어 더 빠를 수 있지만, 이후 쿼리에서는 attached 상태인 프로젝션이 없어 더 느려질 수 있습니다. rebuild는 프로젝션을 다시 빌드하므로 현재 쿼리의 성능에 영향을 줄 수 있지만, 이후 쿼리 속도는 빨라질 수 있습니다. 또한 이러한 옵션은 part 수준에서만 작동합니다. 즉, 영향을 받지 않은 part의 프로젝션은 삭제나 재빌드 같은 작업을 유발하지 않고 그대로 유지됩니다.
가능한 값:
throwdroprebuild
load_existing_rows_count_for_old_parts
truefalse
lock_acquire_timeout_for_background_operations
mutation_workload
workload 설정 값으로 사용됩니다. 지정하지 않으면(빈 문자열) 서버 설정 mutation_workload가 대신 사용됩니다.
관련 항목
non_replicated_deduplication_window
- 임의의 양의 정수
0(중복 제거 비활성화)
notify_newest_block_number
nullable_serialization_version
Nullable(T) 컬럼에 사용되는 직렬화 메서드를 제어합니다.
가능한 값:
-
basic —
Nullable(T)에 표준 직렬화를 사용합니다. -
allow_sparse —
Nullable(T)에서 희소 인코딩을 사용할 수 있도록 허용합니다.
object_serialization_version
v1v2v3
v3뿐입니다.
old_parts_lifetime
- 임의의 양의 정수.
old_parts_lifetime초가 지난 후에만 삭제합니다.
비활성 파트는 현재 쿼리에서 사용되지 않는 경우, 즉
파트의 refcount가 1인 경우 제거됩니다.
새 파트에는 fsync가 호출되지 않으므로 일정 시간 동안 새 파트는
server의 RAM(OS cache)에만 존재합니다. server가 예기치 않게 재부팅되면 새
파트가 손실되거나 손상될 수 있습니다. 데이터를 보호하기 위해 비활성 파트는 즉시 삭제되지
않습니다.
시작 시 ClickHouse는 파트의 무결성을 검사합니다. 병합된
파트가 손상된 경우 ClickHouse는 비활성 파트를 active 목록으로 되돌린 뒤
나중에 다시 머지합니다. 그런 다음 손상된 파트의 이름이 변경되고(broken_
접두사가 추가됨) detached 폴더로 이동됩니다. 병합된 파트가
손상되지 않은 경우에는 원래 비활성 파트의 이름이 변경되고(ignored_
접두사가 추가됨) detached 폴더로 이동됩니다.
기본 dirty_expire_centisecs 값(Linux 커널 설정)은 30
초(RAM에만 기록된 데이터가 저장되는 최대 시간)이지만,
디스크 시스템에 부하가 큰 경우 데이터는 훨씬 나중에 기록될 수 있습니다. 실험적으로
old_parts_lifetime 값은 480초로 선택되었으며, 이 시간 동안에는
새 파트가 디스크에 기록되는 것이 보장됩니다.
optimize_row_order
DateTime64 타입의 timestamp 컬럼을 포함하는 high-cardinality 기본 키는 이 설정의 효과를 보기 어렵습니다.
packed_skip_index_max_bytes
skp_idx_<name>.idx2 / .mrk2 파일로
기록되지 않고, 각 파트별 단일 skp_idx.packed 아카이브로 묶입니다. 이보다 큰
서브스트림은 기존 파일별 레이아웃을 유지합니다. 이 결정은 쓰기 시점에 서브스트림별로
독립적으로 이루어지므로, 하나의 파트 안에서도 작은 인덱스(예: minmax)는 패킹되고
큰 인덱스(예: 규모가 큰 bloom_filter)는 파일별로 저장될 수 있습니다. 패킹을 완전히
비활성화하려면 0으로 설정합니다(기본값).
각 skip-index 서브스트림은 실제로 데이터 파일과 마크 파일로 구성되며, spill 여부를
결정하기 전까지 두 파일 모두 메모리에서 임계값까지 버퍼링됩니다. 따라서 쓰기 중 최대
메모리 사용량은 2 * packed_skip_index_max_bytes * (number of substreams that stay below the threshold)에 비례합니다.
전체 텍스트 인덱스는 이 설정에서 지원되지 않으며 패킹되지 않습니다.
패킹을 사용하면 테이블에 많은 skip 인덱스가 정의된 경우 inode 부담을 줄일 수 있습니다(예:
add_minmax_index_for_numeric_columns 사용 시).
온디스크 포맷은 자체 기술형입니다. 리더는 skp_idx.packed를 감지하고 그 안의 패킹된
서브스트림을 투명하게 처리합니다. 이 설정을 변경해도 새로 기록되는 파트에만 영향을 미치며,
기존 파트는 쓰기 시점의 레이아웃을 그대로 유지합니다.
part_minmax_index_columns
partition_key_only— 파티션 키 컬럼만 추적합니다.with_block_number_offset— 파티션 키 컬럼에 더해 영속적으로 저장된_block_number및_block_offset가상 컬럼도 추적합니다. 이 컬럼을 기준으로 파트 수준 프루닝을 사용할 수 있습니다.
propagate_types_serialization_versions_to_nested_types
ratio_of_defaults_for_sparse_serialization
ratio_of_defaults_for_sparse_serialization
설정을 1.0보다 작게 지정하십시오. 값이 1.0 이상이면
컬럼은 항상 일반적인 전체 serialization을 사용하여 기록됩니다.
가능한 값:
- 희소 직렬화를 활성화하려면
0과1사이의 Float 값 - 희소 직렬화를 사용하지 않으려면
1.0(또는 그 이상)
s 컬럼의 값이
전체 행의 95%에서 빈 문자열입니다. my_regular_table에서는 희소 직렬화를 사용하지 않고,
my_sparse_table에서는 ratio_of_defaults_for_sparse_serialization을
0.95로 설정합니다:
my_sparse_table의 s 컬럼이 디스크에서 차지하는 저장 공간이 더 적다는 점을 확인하십시오:
system.parts_columns 테이블의
serialization_kind 컬럼을 확인하여 검증할 수 있습니다:
s에서 어느 부분이 희소 직렬화로 저장되었는지 확인할 수 있습니다:
reduce_blocking_parts_sleep_ms
replace_long_file_name_to_hash
replicated_can_become_leader
true이면 이 노드의 복제된 테이블 레플리카가
리더 역할을 맡으려고 시도합니다.
가능한 값:
truefalse
search_orphaned_parts_disks
- any - 범위가 제한되지 않습니다.
- local - 범위가 로컬 디스크로 제한됩니다.
- none - 범위가 비어 있으며, 검색하지 않습니다
serialization_info_version
serialization.json을 작성할 때 사용하는 serialization info version입니다.
이 설정은 cluster upgrade 중 compatibility를 유지하는 데 필요합니다.
가능한 값:
basic- 기본 포맷입니다.with_types- 추가types_serialization_versions필드가 포함된 포맷이며, 타입별 직렬화 버전을 사용할 수 있습니다. 이렇게 하면string_serialization_version과 같은 설정이 적용됩니다.
basic으로 설정하십시오. upgrade가 완료되면
타입별 직렬화 버전을 활성화하려면 WITH_TYPES로 전환하십시오.
활성화된 경우(기본값), 공통 접두사를 가진 점 표기 이름의 Array 컬럼(예: n.a 및 n.b)은
Nested 구조의 일부로 처리됩니다. 즉, 디스크에서 하나의 offsets 파일(예: n.size0)을 공유하며,
INSERT 중에는 배열 크기가 서로 같은지 검증합니다.
비활성화된 경우 각 Array 컬럼은 자체적인 독립 offset 파일을 가지며, 점 표기 이름은 더 이상 특별한
시맨틱을 갖지 않습니다. 또한 동일한 접두사를 공유하는 점 표기 Array 컬럼과 스칼라 컬럼이 함께 존재할 수 있습니다
(예: n UInt32와 n.a Array(String)). 이 설정은 테이블 생성 후에는 변경할 수 없습니다.
simultaneous_parts_removal_limit
simultaneous_parts_removal_limit개의 파트를 삭제합니다.
simultaneous_parts_removal_limit를 0으로 설정하면 제한 없이 삭제합니다.
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컬럼에 별도의 크기 스트림을 사용합니다.
temporary_directories_lifetime
try_fetch_recompressed_part_timeout
- 임의의 양의 정수.
ttl_only_drop_parts
TTL 설정에 따라 만료되었을 때, MergeTree 테이블에서 데이터 파트 전체를 삭제할지 제어합니다.
ttl_only_drop_parts가 비활성화된 경우(기본값), TTL 설정에 따라 만료된 행만 삭제됩니다.
ttl_only_drop_parts가 활성화된 경우, 해당 파트의 모든 행이 TTL 설정에 따라 만료되면 파트 전체가 삭제됩니다.
wait_for_unique_parts_send_before_shutdown_ms
zookeeper_session_expiration_check_period
- 양의 정수 아무 값이나 가능합니다.