Pregunta
Al ejecutar una sentencia INSERT...SELECT, aparece el error Too many partes (TOO_MANY_PARTS).
¿Cómo puedo resolverlo?
Respuesta
A continuación se indican algunos ajustes que pueden modificarse para evitar este error. Se trata de una configuración avanzada de ClickHouse, y estos valores solo deben establecerse después de comprender las especificaciones del servicio de ClickHouse Cloud o del clúster local donde se vayan a usar; por tanto, no los tome como una solución universal.
max_insert_block_size = 100_000_000 (valor predeterminado 1_048_576)
Aumentarlo de ~1M a 100M permitiría formar bloques más grandes
Nota: Este ajuste solo se aplica cuando el servidor forma los bloques; es decir, en los INSERT a través de la interfaz HTTP, y no en clickhouse-client
min_insert_block_size_rows = 100_000_000 (valor predeterminado 1_048_576)
Aumentarlo de ~1M a 100M permitiría formar bloques más grandes.
min_insert_block_size_bytes = 500_000_000 (valor predeterminado 268_435_456)
Aumentarlo de 268.44 MB a 500 MB permitiría formar bloques más grandes.
parts_to_delay_insert = 500 (valor predeterminado 150)
Aumentarlo evita que los INSERT se ralenticen artificialmente al alcanzarse el número de partes activas en una sola partición.
parts_to_throw_insert = 1500 (valor predeterminado 3000)
Aumentarlo, por lo general, afectaría al rendimiento de las consultas sobre la tabla, pero sería aceptable para la migración de datos.