Skip to main content
Estas configuraciones están disponibles en system.settings y se generan automáticamente a partir del código fuente.

max_insert_block_size

Aliases: 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:
  1. 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
    Nota: Cuando se usa clickhouse-client o clickhouse-local para leer desde un archivo, el propio client analiza los datos y esta configuración se aplica en el client side.
  2. 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.
Possible values:
  • Entero positivo.

max_insert_block_size_bytes

El tamaño máximo de los bloques (en bytes) que se forman para la inserción en una tabla. Esta configuración funciona junto con max_insert_block_size_rows y controla la formación de bloques en el mismo contexto. Consulta max_insert_block_size_rows para obtener información detallada sobre cuándo y cómo se aplican estas configuraciones. Posibles valores:
  • Entero positivo.
  • 0 — la configuración no participa en la formación de bloques.

max_insert_delayed_streams_for_parallel_write

El número máximo de streams (columnas) para retrasar el volcado final de la parte. Valor predeterminado: auto (100 si el almacenamiento subyacente admite escritura en paralelo, por ejemplo S3, y deshabilitado en caso contrario) Valor predeterminado de Cloud: 50.

max_insert_threads

El número máximo de hilos para ejecutar la consulta INSERT. Esto se aplica tanto a INSERT SELECT como a un INSERT simple cuyos datos se envían desde clickhouse-client o a través de la interfaz HTTP. El lado de escritura de la canalización (la combinación de bloques y la escritura en la tabla de destino) se paraleliza en hasta este número de hilos. Valores posibles:
  • 0 — Automático. Usa el número de núcleos de CPU disponibles en el servidor (el mismo valor automático que max_threads), reducido si hay presión de memoria mediante max_insert_threads_min_free_memory_per_thread.
  • 1 — El INSERT se ejecuta en un solo hilo (sin ejecución en paralelo). Úselo para conservar el orden de inserción de INSERT ... SELECT.
  • Entero positivo mayor que 1 — Ejecución en paralelo con el número de hilos especificado.
Antes de la versión 26.8, el valor predeterminado era 1 (sin ejecución en paralelo). Desde la versión 26.8, el valor predeterminado (0) equivale al número de núcleos de CPU, por lo que INSERT se paraleliza de forma predeterminada. Establezca max_insert_threads en 1 (o use la configuración compatibility) para restaurar el comportamiento anterior. Valor predeterminado de Cloud:
  • 1 para nodos con 8 GiB de memoria
  • 2 para nodos con 16 GiB de memoria
  • 4 para nodos más grandes
INSERT SELECT en paralelo solo tiene efecto si la parte SELECT se ejecuta en paralelo; consulte la configuración max_threads. En un INSERT simple, los datos de entrada se leen y analizan como un único flujo, y después la canalización se redimensiona a este número de flujos para la escritura. La paralelización del lado de escritura se aplica solo a INSERT simples síncronos: las inserciones asíncronas (async_insert = 1) se almacenan en una cola y se vacían en segundo plano, por lo que esta configuración no les afecta y siempre permanecen en un único flujo. El lado de escritura se paraleliza solo cuando es seguro hacerlo; de lo contrario, permanece en un único flujo y esta configuración no le afecta. En particular, la escritura se mantiene en un único flujo cuando use_strict_insert_block_limits está habilitada, una tabla de destino (o una tabla a la que reenvía) deduplica bloques insertados y la deduplicación de inserciones está habilitada para la consulta (consulte deduplicate_insert); cuando el destino tiene vistas materializadas dependientes —incluidas las vistas de una tabla a la que el destino reenvía, por ejemplo, detrás de un Alias—, salvo que parallel_view_processing esté habilitada y las cadenas de vistas dependientes no presenten riesgos de deduplicación —la deduplicación en las vistas está deshabilitada (deduplicate_blocks_in_dependent_materialized_views) o ninguna ruta de vista dependiente puede deduplicar—; y siempre para destinos Buffer y Distributed. Un Buffer se vacía en su propio contexto y un Distributed reenvía la escritura a un fragmento remoto (que puede almacenar los datos en búfer), por lo que la configuración de deduplicación de esta consulta no determina la escritura final, que se mantiene en un único flujo independientemente de dicha configuración. Una inserción de quórum no paralela (insert_quorum es 2 o mayor, o 'auto', y insert_quorum_parallel está deshabilitada) también permanece en un único flujo, porque solo permite una parte de quórum en curso por tabla. Los valores más altos aumentan el uso de memoria.

max_insert_threads_min_free_memory_per_thread

Igual que 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.
Última modificación el 14 de agosto de 2026