Qué significa la excepción
Too many parts cuando un INSERT superaría un límite configurado sobre la cantidad de partes de datos activas en una tabla MergeTree. La excepción suele incluir el mensaje Merges are processing significantly slower than inserts.
Cada INSERT síncrono crea al menos una parte de datos. Si una inserción contiene filas para varios valores de partición, ClickHouse puede crear una parte para cada partición afectada. Las fusiones en segundo plano combinan las partes más pequeñas en partes más grandes, pero si se crean partes nuevas más rápido de lo que ClickHouse puede fusionarlas, la cantidad de partes activas sigue aumentando.
La excepción puede activarse por cualquiera de estos ajustes:
parts_to_throw_insert, que limita la cantidad de partes activas en una sola partición.max_parts_in_total, que limita la cantidad total de partes activas en una tabla.
Diagnosticar la causa
max_parts_in_total, cuente todas las partes activas de la tabla:
- Inserciones síncronas frecuentes y pequeñas.
- Una clave de particionamiento de alta cardinalidad.
- Inserciones que contienen filas para muchos valores de partición.
- Fusiones en segundo plano que no pueden seguir el ritmo debido a un throughput de almacenamiento limitado, espacio libre en disco insuficiente u otra contención de recursos.
system.merges y revisar los registros del servidor para detectar errores de fusión.
Resolver la excepción
Inserciones síncronas por lotes
INSERT síncrono por segundo. Un menor número de inserciones, pero de mayor tamaño, crea menos partes y reduce el trabajo que requieren las fusiones en segundo plano.
Usar inserciones asíncronas
wait_for_async_insert = 1 para que ClickHouse confirme una inserción solo una vez que los datos se hayan escrito correctamente.
Revise la clave de particionamiento
Investigar cuellos de botella de merge
Evite aumentar los límites de partes como solución principal
parts_to_throw_insert o max_parts_in_total no soluciona la causa de la creación excesiva de partes. Los límites más altos pueden retrasar la excepción, pero también pueden aumentar la sobrecarga del sistema de archivos y los metadatos, y reducir el rendimiento de las consultas. Cambie estos ajustes solo después de identificar la causa y confirmar que el sistema tiene capacidad suficiente.
Verifique la recuperación
system.merges hasta que se haya resuelto la acumulación pendiente.