max_insert_block_size
max_insert_block_size_rows
El tamaño máximo de los bloques (en cantidad de filas) que se forman para la inserción en una tabla.
Esta configuración controla la formación de bloques en dos contextos:
-
Análisis del formato: Cuando el server analiza formatos de entrada basados en filas (CSV, TSV, JSONEachRow, etc.) desde cualquier interface (HTTP, clickhouse-client con datos inline, gRPC, PostgreSQL wire protocol), los bloques se emiten cuando:
- Se alcanzan tanto min_insert_block_size_rows AND min_insert_block_size_bytes, OR
- Se alcanza max_insert_block_size_rows OR max_insert_block_size_bytes
-
Operaciones INSERT: Durante las queries INSERT y cuando los datos fluyen a través de vistas materializadas, el comportamiento de esta configuración depende de
use_strict_insert_block_limits:-
Cuando está habilitada: Los bloques se emiten cuando:
- Umbrales mínimos (AND): Se alcanzan tanto min_insert_block_size_rows AND min_insert_block_size_bytes
- Umbrales máximos (OR): Se alcanza max_insert_block_size_rows OR max_insert_block_size_bytes
- Cuando está deshabilitada: Los bloques se emiten cuando se alcanza min_insert_block_size_rows OR min_insert_block_size_bytes. Las configuraciones max_insert_block_size no se aplican.
-
Cuando está habilitada: Los bloques se emiten cuando:
- Entero positivo.
max_insert_block_size_bytes
- Entero positivo.
- 0 — la configuración no participa en la formación de bloques.
max_insert_delayed_streams_for_parallel_write
50.
max_insert_threads
INSERT SELECT.
Valores posibles:
- 0 (o 1) —
INSERT SELECTsin ejecución en paralelo. - Entero positivo. Mayor que 1.
1para nodos con 8 GiB de memoria2para nodos con 16 GiB de memoria4para nodos más grandes
INSERT SELECT en paralelo solo tiene efecto si la parte SELECT se ejecuta en paralelo; consulta la configuración max_threads.
Los valores más altos darán lugar a un mayor uso de memoria.
max_insert_threads_min_free_memory_per_thread
max_threads_min_free_memory_per_thread, pero aplicado a max_insert_threads en lugar de a max_threads. El valor predeterminado es mayor porque las canalizaciones de inserción suelen mantener búferes por hilo más grandes (partes de MergeTree, bloques de compresión) que las canalizaciones de lectura.
Si la cantidad de memoria libre es menor que max_insert_threads multiplicado por este valor, max_insert_threads se reduce en consecuencia, hasta un mínimo de 1.
Establézcalo en 0 para desactivar este límite.