max_* MergeTree 설정

max_* MergeTree 설정 (max_* MergeTree settings)

이 문서는 max_*로 시작하는 MergeTree 설정들을 다루는 페이지예요. 파트 개수 검사 기준, Map 버킷 수, 압축 블록 크기, 동시 쿼리 수, 파일·파티션·테이블 크기 제한 등과 관련된 설정이 자동 생성되어 정리되어 있어요.

출처: 문서

본문

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

max_avg_part_size_for_too_many_parts

'too many parts' 검사는 'parts_to_delay_insert'와 'parts_to_throw_insert'에 따라 결정되는데, (해당 파티션의) 평균 파트 크기가 지정된 임계값보다 크지 않을 때만 활성화됩니다. 평균 파트 크기가 지정된 임계값보다 크면 INSERT가 지연되거나 거부되지 않아요. 이 덕분에 파트가 더 큰 파트로 성공적으로 병합된다면 단일 서버의 단일 테이블에 수백 테라바이트를 저장할 수 있어요. 이 설정은 비활성 파트나 전체 파트의 임계값에는 영향을 주지 않습니다.

max_buckets_in_map

Map 직렬화를 위한 최대 버킷 수예요. with_buckets Map 직렬화에서 동작합니다. 실제 버킷 수는 map_buckets_strategy에 의해 결정됩니다. 허용되는 최댓값은 256이에요.

max_cleanup_delay_period

오래된 큐 로그, 블록 해시와 파트를 정리하는 최대 주기예요.

max_compress_block_size

테이블에 기록하기 위해 압축하기 전의 압축되지 않은 데이터 블록의 최대 크기예요. 이 설정은 전역 설정에서도 지정할 수 있어요(max_compress_block_size 설정 참고). 테이블 생성 시 지정된 값이 이 설정의 전역 값을 재정의합니다.

max_concurrent_queries

MergeTree 테이블과 관련해 동시에 실행되는 최대 쿼리 수예요. 쿼리는 여전히 다른 max_concurrent_queries 설정에 의해 제한됩니다. 가능한 값:

  • 양의 정수.
  • 0 — 제한 없음.

기본값: 0(제한 없음). Example

<max_concurrent_queries>50</max_concurrent_queries>

max_digestion_size_per_segment

더 이상 사용하지 않는 설정으로, 아무것도 하지 않아요.

max_file_name_length

해싱하지 않고 그대로 유지할 파일 이름의 최대 길이예요. replace_long_file_name_to_hash 설정이 활성화된 경우에만 효과가 있습니다. 이 설정의 값에는 파일 확장자의 길이가 포함되지 않아요. 그래서 파일시스템 오류를 피하려면 최대 파일 이름 길이(보통 255바이트)보다 여유를 두고 낮게 설정하는 것이 좋습니다.

max_partitions_to_read

하나의 쿼리에서 접근할 수 있는 최대 파티션 수를 제한해요. 테이블 생성 시 지정된 설정 값은 쿼리 수준 설정으로 재정의할 수 있어요. 가능한 값:

  • 양의 정수.

쿼리/세션/프로필 수준에서 max_partitions_to_read라는 쿼리 복잡도 설정을 지정할 수도 있어요.

max_projections

머지 트리 프로젝션의 최대 개수예요.

max_table_size_bytes_compressed

테이블의 모든 활성 및 비활성 데이터 파트의 압축된 총 바이트 수(디스크 상의 크기)가 이 값을 초과하면 INSERTTable size limit exceeded 예외로 중단됩니다. 이 설정의 목적이 디스크 사용을 제한하는 것이므로 비활성 파트도 계산에 포함돼요. 비활성 파트는 백그라운드에서 제거되므로(old_parts_lifetime 설정 참고), 관찰되는 크기는 시간이 지나며 줄어들 수 있습니다. 이 한도는 INSERT 시작 시와 백그라운드 병합 및 뮤테이션 결과를 포함해 새 데이터 파트가 작업 집합에 커밋될 때 확인됩니다. 머티리얼라이즈드 뷰에 의한 삽입도 검사돼요. 이 한도는 복제된 페치에서는 확인되지 않아서, 여러 복제본에 대한 병렬 삽입이 한도를 초과할 때 경쟁 조건이 발생할 수 있습니다. 빈 데이터 파트 커밋은 항상 허용되므로, 한도를 초과한 테이블에서 TRUNCATEALTER TABLE ... DROP PARTITION으로 데이터를 제거할 수 있어요. 가능한 값:

  • 양의 정수.
  • 0 — 무제한.

멀티테넌트, 임시, 데모 서비스에 유용해요.

max_table_size_bytes_uncompressed

max_table_size_bytes_compressed와 같지만, 이 한도는 테이블의 모든 활성 및 비활성 데이터 파트의 압축되지 않은 총 바이트 수에 적용됩니다. 가능한 값:

  • 양의 정수.
  • 0 — 무제한.

멀티테넌트, 임시, 데모 서비스에 유용해요.

max_table_size_rows

테이블의 활성 데이터 파트의 총 행 수가 이 값을 초과하면 INSERTTable size limit exceeded 예외로 중단됩니다. 이 한도는 INSERT 시작 시와 백그라운드 병합 및 뮤테이션 결과를 포함해 새 데이터 파트가 작업 집합에 커밋될 때 확인됩니다(따라서 테이블 크기를 한도 이상으로 늘리는 뮤테이션은 끝나지 않고 재시도됩니다). 머티리얼라이즈드 뷰에 의한 삽입도 검사돼요. 이 한도는 복제된 페치에서는 확인되지 않아서, 여러 복제본에 대한 병렬 삽입이 한도를 초과할 때 경쟁 조건이 발생할 수 있습니다. 빈 데이터 파트 커밋은 항상 허용되므로, 한도를 초과한 테이블에서 TRUNCATEALTER TABLE ... DROP PARTITION으로 데이터를 제거할 수 있어요. 가능한 값:

  • 양의 정수.
  • 0 — 무제한.

멀티테넌트, 임시, 데모 서비스에 유용해요.

max_uncompressed_bytes_in_patches

모든 패치 파트의 데이터 최대 압축 해제 크기(바이트)예요. 모든 패치 파트의 데이터 양이 이 값을 초과하면 경량 업데이트가 거부됩니다. 0은 무제한을 의미해요.

더 알아보기 (Learn more)