shared_merge_tree_* MergeTree 테이블 설정
shared_merge_tree_* MergeTree 테이블 설정
이 페이지에서는 ClickHouse Cloud의 SharedMergeTree 테이블에서 조정(coordination), 파트 업데이트, Keeper 메타데이터 등을 제어하는 shared_merge_tree_* 계열 설정을 설명할게요. 이 설정들은 system.merge_tree_settings 테이블에서 확인할 수 있고, ClickHouse 소스 코드에서 자동으로 생성된 값이에요.
출처: 문서
본문
이 설정들은 system.merge_tree_settings 테이블에서 확인할 수 있으며, ClickHouse 소스에서 자동으로 생성돼요.
shared_merge_tree_activate_coordinated_merges_tasks
조정된(co-ordinated) 병합 작업의 재스케줄링을 활성화해요. shared_merge_tree_enable_coordinated_merges=0일 때도 유용할 수 있는데, 이는 병합 코디네이터 통계를 채우고 콜드 스타트(cold start)를 돕기 때문이에요.
shared_merge_tree_blobs_list_inline_file_max_bytes
blob-list 파트의 파일 중 이 바이트 수 이하인 파일(예: count.txt, metadata_version.txt, minmax 인덱스)을 별도의 객체 스토리지 blob 대신 통합된 blobs.list 파일 안에 직접 저장하여, 작은 파일 하나당 blob 쓰기와 읽기를 한 번씩 절약해요. 0은 inlining을 비활성화해요. blob-list 스토리지를 사용하는 파트에만 적용돼요 (shared_merge_tree_use_blobs_list_for_parts 참고). ClickHouse Cloud에서만 사용할 수 있어요.
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
조정된 병합(co-ordinated merges) 전략을 활성화해요.
shared_merge_tree_enable_keeper_parts_extra_data
가상 파트에 속성을 쓰고 Keeper에 블록을 커밋하는 것을 활성화해요.
shared_merge_tree_enable_outdated_parts_check
outdated 파트 검사를 활성화해요. ClickHouse Cloud에서만 사용할 수 있어요.
shared_merge_tree_idle_parts_update_seconds
shared merge tree에서 ZooKeeper watch에 의해 트리거되지 않는 파트 업데이트의 주기(초)예요. ClickHouse Cloud에서만 사용할 수 있어요.
shared_merge_tree_inactive_replica_cutoff_seconds
비활성 레플리카가 백그라운드 정리(OutdatedPartsQuorumThread)에 의해 여전히 고려되는 기간이에요: 레플리카가 이 초 수보다 적은 시간 동안 비활성 상태라면, outdated 파트 제거와 완료된 mutation 잘라내기를 계속 지연시켜요. 0은 ZooKeeper 세션 타임아웃 두 개의 기본값을 사용한다는 뜻이에요. ClickHouse Cloud에서만 사용할 수 있어요.
shared_merge_tree_initial_parts_update_backoff_ms
파트 업데이트의 초기 백오프(backoff)예요. ClickHouse Cloud에서만 사용할 수 있어요.
shared_merge_tree_interserver_http_connection_timeout_ms
interserver HTTP 연결에 대한 타임아웃이에요. ClickHouse Cloud에서만 사용할 수 있어요.
shared_merge_tree_interserver_http_timeout_ms
interserver HTTP 통신에 대한 타임아웃이에요. ClickHouse Cloud에서만 사용할 수 있어요.
shared_merge_tree_leader_update_period_random_add_seconds
thundering herd 효과를 피하기 위해 shared_merge_tree_leader_update_period에 0에서 x초 사이의 균등 분포 값을 더해요. ClickHouse Cloud에서만 사용할 수 있어요.
shared_merge_tree_leader_update_period_seconds
파트 업데이트를 위해 리더십을 다시 확인하는 최대 주기예요. ClickHouse Cloud에서만 사용할 수 있어요.
shared_merge_tree_max_outdated_parts_to_process_at_once
한 번의 HTTP 요청에서 리더가 제거를 확인하려고 시도하는 outdated 파트의 최대 개수예요. 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 스레드)에 참여하는 최대 레플리카 수예요. 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의 최대 손상(broken) 파트 수예요. 이보다 많으면 자동 분리(detach)를 거부해요.
shared_merge_tree_max_suspicious_broken_parts_bytes
SMT의 모든 손상 파트의 최대 크기예요. 이보다 크면 자동 분리를 거부해요.
shared_merge_tree_memo_ids_remove_timeout_seconds
insert 재시도 중 잘못된 동작을 피하기 위해 insert 메모이제이션(memoization) id를 얼마나 오래 저장할지예요. ClickHouse Cloud에서만 사용할 수 있어요.
shared_merge_tree_merge_coordinator_distribution_algorithm
병합 코디네이터 스레드가 레플리카 간에 병합을 분배할 때 사용하는 알고리즘이에요.
가능한 값:
water_fillingsainte_lague
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
코디네이터가 준비하여 워커들에 분배해야 하는 병합 엔트리 수예요. auto로 설정하면 단일 레플리카에서 허용되는 최대 병합 작업 수에 활성 레플리카 수를 곱한 값과 같아요.
shared_merge_tree_merge_coordinator_min_period_ms
병합 코디네이터 스레드 실행 사이의 최소 시간이에요.
shared_merge_tree_merge_worker_fast_timeout_ms
병합 워커 스레드가 즉시 작업 후 상태를 업데이트해야 할 때 사용하는 타임아웃이에요.
shared_merge_tree_merge_worker_regular_timeout_ms
병합 워커 스레드 실행 사이의 시간이에요.
shared_merge_tree_outdated_parts_group_size
outdated 파트 정리를 위해 같은 rendezvous hash 그룹에 속할 레플리카 수예요. ClickHouse Cloud에서만 사용할 수 있어요.
shared_merge_tree_partitions_hint_ratio_to_reload_merge_pred_for_mutations
병합/mutate 선택 작업에서 <candidate partitions for mutations only (partitions that cannot be merged)>/<candidate partitions for mutations> 비율이 이 설정보다 높아지면 병합 predicate를 다시 로드해요. ClickHouse Cloud에서만 사용할 수 있어요.
shared_merge_tree_parts_load_batch_size
한 번에 스케줄할 파트 메타데이터 가져오기(fetch) 작업의 수예요. ClickHouse Cloud에서만 사용할 수 있어요.
shared_merge_tree_postpone_next_merge_for_locally_merged_parts_ms
로컬로 병합된 파트를 포함하는 새 병합을 시작하지 않고 그 파트를 유지하는 시간이에요. 다른 레플리카가 그 파트를 가져와 병합을 시작할 기회를 줘요. 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, 값] 초 범위에서 균등하게 지터(jitter)돼요. 예외: 값이 0이면 이 규칙을 따르지 않아요; 구현이 최소 200ms를 적용하므로 다음 실행은 [0, 200]ms 범위에서 지터돼요.
shared_merge_tree_try_fetch_part_in_memory_data_from_replicas
활성화하면 모든 레플리카가 다른 레플리카에 이미 존재하는 파트 인메모리 데이터(프라이머리 키, 파티션 정보 등)를 가져오려고 시도해요.
shared_merge_tree_try_fetch_part_in_memory_data_from_replicas_on_startup
활성화하면 모든 레플리카가 시작 시 다른 레플리카에 이미 존재하는 파트 인메모리 데이터(프라이머리 키, 파티션 정보 등)를 가져오려고 시도해요.
shared_merge_tree_update_replica_flags_delay_ms
레플리카가 백그라운드 스케줄에 따라 자체 플래그를 다시 로드하려고 시도하는 주기예요.
shared_merge_tree_use_blobs_list_for_parts
SharedMergeTree 테이블(Wide와 Compact 모두)의 파트를 파일당 Keeper 노드 하나 대신 통합된 blob-list 메타데이터 노드로 저장해요. 파트별 Keeper 메타데이터를 O(files)에서 작은 상수로 줄이면서 파일당 객체 스토리지 blob 하나는 유지해요. ClickHouse Cloud에서만 사용할 수 있어요.
shared_merge_tree_use_metadata_hints_cache
다른 레플리카의 인메모리 캐시에서 FS 캐시 힌트를 요청하는 것을 활성화해요. ClickHouse Cloud에서만 사용할 수 있어요.
shared_merge_tree_use_outdated_parts_compact_format
outdated 파트에 컴팩트 형식을 사용해요: Keeper에 대한 부하를 줄이고 outdated 파트 처리를 개선해요. 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
한 배치로 묶을 파티션 발견(discovery) 개수예요.
shared_merge_tree_virtual_parts_partition_atomic_discovery
사용되지 않는 설정으로, 아무 것도 하지 않아요.