min_* MergeTree 설정

min_* MergeTree 설정 (min_* MergeTree settings)

이 문서는 min_*로 시작하는 MergeTree 설정들을 다루는 페이지예요. 지연 종료 기준, 적응형 쓰기 버퍼, 압축 블록 크기, 데이터 그레뉼 크기, 직접 I/O 사용, 강제 병합 연령, 한 번에 병합할 파트 수 등과 관련된 설정들이 자동 생성되어 정리되어 있어요.

출처: 문서

본문

이 설정들은 system.merge_tree_settings에서 확인할 수 있으며 ClickHouse 소스에서 자동 생성됩니다.

min_absolute_delay_to_close

상태 확인 중에 요청 서비스를 중지하고 Ok를 반환하지 않도록 종료하는 최소 절대 지연이에요.

min_columns_to_activate_adaptive_write_buffer

적응형 기록 버퍼를 사용해 열이 많은 테이블의 메모리 사용을 줄일 수 있게 허용해요. 와이드 파트가 기록하는 스트림 수와 비교됩니다. 스트림 수는 열 수를 크게 초과할 수 있어요: 버킷이 많은 Map이나 깊이 중첩된 Array 또는 Tuple은 단일 열에 대해 많은 스트림을 기록하며, 스트림마다 기록 버퍼가 하나씩 할당됩니다. 가능한 값:

  • 0 - 비활성화
  • 1 - 항상 활성화

min_compress_block_size

다음 마크를 기록할 때 압축에 필요한 압축되지 않은 데이터 블록의 최소 크기예요. 이 설정은 전역 설정에서도 지정할 수 있어요(min_compress_block_size 설정 참고). 테이블 생성 시 지정된 값이 이 설정의 전역 값을 재정의합니다.

min_index_granularity_bytes

데이터 그레뉼의 허용 가능한 최소 크기(바이트)예요. 실수로 index_granularity_bytes가 매우 낮은 테이블을 만드는 것을 방지하기 위한 보호 장치예요.

min_marks_to_honor_max_concurrent_queries

max_concurrent_queries 설정을 적용하기 위해 쿼리가 읽은 최소 마크 수예요. 쿼리는 여전히 다른 max_concurrent_queries 설정에 의해 제한됩니다. 가능한 값:

  • 양의 정수.
  • 0 — 비활성화(어떤 쿼리에도 max_concurrent_queries 한도가 적용되지 않음).

Example

<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_partition_age_to_force_merge_seconds

파티션의 모든 파트가 이 값보다 오래됐을 때, 즉 파티션이 더 이상 삽입을 받지 않을 때 파티션의 파트를 병합해요. min_age_to_force_merge_on_partition_only가 있는 min_age_to_force_merge_seconds와 달리, 파티션이 단일 병합에 맞출 필요는 없습니다. 각 병합은 여전히 max_bytes_to_merge_at_max_space_in_pool을 존중해요. Simple 및 StochasticSimple 병합 선택기에서 동작합니다. 여기서 비교되는 연령은 파티션에서 가장 어린 파트의 연령입니다(now - modification_time, 파트들에 대해 최소화됨). 따라서 모든 파트가 이 값을 지나 노화된 후에만 규칙이 작동해요. 새 파트는 규칙을 재설정합니다: 삽입, 뮤테이션, 그리고 이 설정 자체가 할당한 각 병합도 그렇습니다(병합된 파트가 새 것이기 때문). 따라서 강제 병합이 실행되자마자 강제는 해제되고, 새 파트 없이 이 값이 다시 경과한 뒤에야 재무장됩니다. 그래서 여러 번의 병합이 필요한 파티션은 한 번의 연속 패스가 아니라 이 간격만큼 떨어진 연속 라운드로 컴팩트해져요. 강제는 min_age_to_force_merge_seconds와 정확히 같은 방식으로 동작합니다: 일반적으로 불균형 병합이 할당되지 않게 하는 크기 비율 요구사항을 면제하고, min_parts_to_merge_at_once 바닥값도 면제하므로 강제 병합은 그 바닥값이 요구하는 것보다 적은 파트를 덮을 수 있어요. 다른 휴리스틱은 꺼지지 않습니다: merge_selector_window_size는 여전히 어떤 파트를 검사할지 제한하고, merge_selector_enable_heuristic_to_remove_small_parts_at_right는 여전히 선택된 세 개 이상의 파트 범위에서 끝의 작은 파트를 잘라냅니다. 워크로드가 꺼야 하는 것 중 하나라도 있다면 해당 설정으로 명시적으로 꺼야 합니다. Simple 및 StochasticSimple 병합 선택기에서는 min_age_to_force_merge_on_partition_only와 함께 min_age_to_force_merge_seconds와 결합할 수 없어요. 그 조합은 전체 파티션을 한 번에 병합하며, 그래야만 그 병합이 final로 표시되는데, 그 덕분에 ReplacingMergeTreeCLEANUP을 실행할 수 있습니다. 파티션 연령으로 일반 병합을 강제하면 그걸 선점하게 돼요. 단일 병합에 맞는 파티션에는 그 조합을, 그렇지 않은 파티션에는 이 설정을 사용하세요. 다른 선택기는 이 설정을 무시하므로 그 선택기에서는 그 조합이 허용됩니다. 가능한 값:

  • 양의 정수.

min_parts_to_merge_at_once

병합 선택기가 한 번에 병합하도록 고를 수 있는 데이터 파트의 최소 수예요(전문가 수준 설정이므로, 무엇을 하는지 이해하지 못한다면 변경하지 마세요). 0 - 비활성화. Simple 및 StochasticSimple 병합 선택기에서 동작합니다.

min_replicated_logs_to_keep

ZooKeeper 로그에서 마지막 레코드를 이 정도 개수만큼 유지해요, 심지어 쓸모없어져도요. 테이블 동작에는 영향을 주지 않습니다: 정리 전에 ZooKeeper 로그를 진단하는 데만 사용돼요. 가능한 값:

  • 양의 정수.

더 알아보기 (Learn more)