Skip to main content
이러한 설정은 system.settings에서 확인할 수 있으며, 소스 코드에서 자동 생성됩니다.

max_insert_block_size

별칭: max_insert_block_size_rows 테이블에 삽입할 블록의 최대 크기(행 수 기준)를 지정합니다. 이 설정은 다음 두 가지 상황에서 블록 형성을 제어합니다.
  1. 포맷 파싱: 서버가 임의의 인터페이스(HTTP, inline 데이터가 포함된 clickhouse-client, gRPC, PostgreSQL wire 프로토콜)를 통해 행 기반 입력 형식(CSV, TSV, JSONEachRow 등)을 파싱할 때, 다음 조건에서 블록이 생성됩니다.
    • min_insert_block_size_rows AND min_insert_block_size_bytes를 모두 만족한 경우, OR
    • max_insert_block_size_rows OR max_insert_block_size_bytes 중 하나를 만족한 경우
    참고: clickhouse-client 또는 clickhouse-local을 사용해 파일에서 읽는 경우에는 클라이언트 자체가 데이터를 파싱하므로, 이 설정은 클라이언트 측에 적용됩니다.
  2. INSERT 작업: INSERT 쿼리 실행 중이거나 데이터가 구체화된 뷰(Materialized View)를 통과할 때, 이 설정의 동작은 use_strict_insert_block_limits 값에 따라 달라집니다.
    • 활성화된 경우: 다음 조건에서 블록이 생성됩니다.
      • 최소 임계값(AND): min_insert_block_size_rows AND min_insert_block_size_bytes를 모두 만족
      • 최대 임계값(OR): max_insert_block_size_rows OR max_insert_block_size_bytes 중 하나를 만족
    • 비활성화된 경우: min_insert_block_size_rows OR min_insert_block_size_bytes 중 하나를 만족하면 블록이 생성됩니다. max_insert_block_size 설정은 적용되지 않습니다.
가능한 값:
  • 양의 정수.

max_insert_block_size_bytes

테이블에 삽입하기 위해 형성되는 블록의 최대 크기(바이트 단위)입니다. 이 설정은 max_insert_block_size_rows와 함께 작동하며, 동일한 맥락에서 블록 형성을 제어합니다. 이러한 설정이 언제, 어떻게 적용되는지에 대한 자세한 내용은 max_insert_block_size_rows를 참조하십시오. 가능한 값:
  • 양의 정수입니다.
  • 0 — 설정이 블록 형성에 관여하지 않습니다.

max_insert_delayed_streams_for_parallel_write

최종 파트 플러시를 지연할 수 있는 최대 스트림 수(컬럼 수)입니다. 기본값은 자동입니다(예: S3처럼 기반 스토리지가 병렬 쓰기를 지원하면 100, 그렇지 않으면 비활성화). Cloud 기본값: 50.

max_insert_threads

INSERT 쿼리 실행에 사용할 최대 스레드 수입니다. 이 설정은 INSERT SELECTclickhouse-client 또는 HTTP 인터페이스를 통해 데이터를 전송하는 일반 INSERT 모두에 적용됩니다. 파이프라인의 쓰기 측(블록을 합치고 대상 테이블에 쓰는 작업)은 최대 이 수의 스레드로 병렬 실행됩니다. 가능한 값:
  • 0 — 자동. 서버에서 사용할 수 있는 CPU 코어 수(max_threads와 동일한 자동 값)를 사용하며, max_insert_threads_min_free_memory_per_thread에 따라 메모리 부족 시 감소합니다.
  • 1 — INSERT가 단일 스레드에서 실행됩니다(병렬 실행 없음). INSERT ... SELECT의 삽입 순서를 유지하려면 이 값을 사용하십시오.
  • 1보다 큰 양의 정수 — 지정한 수의 스레드로 병렬 실행합니다.
버전 26.8 이전의 기본값은 1(병렬 실행 없음)이었습니다. 26.8부터 기본값(0)은 CPU 코어 수로 해석되므로 기본적으로 INSERT가 병렬 실행됩니다. 이전 동작으로 되돌리려면 max_insert_threads1로 설정하거나 compatibility 설정을 사용하십시오. Cloud 기본값:
  • 메모리가 8 GiB인 노드: 1
  • 메모리가 16 GiB인 노드: 2
  • 더 큰 노드: 4
병렬 INSERT SELECTSELECT 부분도 병렬로 실행되는 경우에만 적용됩니다. max_threads 설정을 참조하십시오. 일반 INSERT에서는 입력 데이터를 단일 스트림으로 읽고 구문 분석한 다음, 쓰기 작업을 위해 파이프라인을 이 수만큼의 스트림으로 조정합니다. 쓰기 측 병렬화는 동기식 일반 INSERT에만 적용됩니다. 비동기 삽입(async_insert = 1)은 큐에 저장되고 백그라운드에서 플러시되므로 이 설정의 영향을 받지 않으며 항상 단일 스트림으로 유지됩니다. 안전한 경우에만 쓰기 측이 병렬 실행됩니다. 그렇지 않으면 단일 스트림으로 유지되며 이 설정은 적용되지 않습니다. 특히 use_strict_insert_block_limits가 활성화되어 있고 대상 테이블(또는 대상이 데이터를 전달하는 테이블)에서 삽입된 블록의 중복을 제거하며 쿼리에 삽입 중복 제거가 활성화된 경우(deduplicate_insert 참조), 또는 대상에 종속 materialized view가 있는 경우(예: Alias 뒤에 있는 대상이 데이터를 전달하는 테이블의 view 포함)에는 쓰기가 단일 스트림으로 유지됩니다. 단, parallel_view_processing이 활성화되어 있고 종속 view 체인에 중복 제거 위험이 없는 경우(views의 중복 제거가 비활성화됨(deduplicate_blocks_in_dependent_materialized_views) 또는 어떤 종속 view 경로에서도 중복을 제거할 수 없음)는 예외입니다. 또한 BufferDistributed 대상에서는 항상 단일 스트림으로 유지됩니다. Buffer는 자체 Context에서 플러시하고 Distributed는 쓰기 작업을 원격 샤드로 전달합니다(원격 샤드에서 데이터를 버퍼링할 수 있음). 따라서 이 쿼리의 중복 제거 설정은 최종 쓰기에 적용되지 않으며, 해당 설정과 관계없이 단일 스트림으로 유지됩니다. 병렬이 아닌 쿼럼 삽입(insert_quorum2 이상이거나 'auto'이고 insert_quorum_parallel이 비활성화된 경우)도 테이블당 진행 중인 쿼럼 파트를 하나만 허용하므로 단일 스트림으로 유지됩니다. 값이 클수록 메모리 사용량이 증가합니다.

max_insert_threads_min_free_memory_per_thread

max_threads_min_free_memory_per_thread와 동일하지만, max_threads가 아니라 max_insert_threads에 적용됩니다. 기본값이 더 큰 이유는 삽입 파이프라인이 일반적으로 읽기 파이프라인보다 스레드별로 더 큰 버퍼(MergeTree 파트, 압축 블록)를 보유하기 때문입니다. 여유 메모리 양이 max_insert_threads에 이 값을 곱한 값보다 적으면, max_insert_threads는 이에 맞게 최소 1까지 줄어듭니다. 이 제한을 비활성화하려면 0으로 설정하십시오.
마지막 수정일 2026년 8월 14일