max_insert_block_size
max_insert_block_size_rows
테이블에 삽입할 블록의 최대 크기(행 수 기준)를 지정합니다.
이 설정은 다음 두 가지 상황에서 블록 형성을 제어합니다.
-
포맷 파싱: 서버가 임의의 인터페이스(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 중 하나를 만족한 경우
-
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
- 양의 정수입니다.
- 0 — 설정이 블록 형성에 관여하지 않습니다.
max_insert_delayed_streams_for_parallel_write
50.
max_insert_threads
INSERT SELECT 쿼리를 실행할 때 사용할 수 있는 최대 스레드 수입니다.
가능한 값:
- 0 (또는 1) —
INSERT SELECT는 병렬 실행되지 않습니다. - 양의 정수. 1보다 커야 합니다.
- 메모리 8 GiB 노드에서는
1 - 메모리 16 GiB 노드에서는
2 - 더 큰 노드에서는
4
INSERT SELECT는 SELECT 부분이 병렬로 실행될 때만 효과가 있습니다. 자세한 내용은 max_threads 설정을 참조하십시오.
값이 클수록 메모리 사용량도 증가합니다.
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으로 설정하십시오.