max_streams_for_files_processing_in_cluster_functions
max_streams_for_merge_tree_reading
max_streams_for_union_step
UNION (se aplica tanto a UNION ALL como a UNION DISTINCT, ya que UNION DISTINCT se implementa mediante un paso UNION ALL seguido de un paso DISTINCT). Cuando una consulta con UNION tiene muchas subconsultas, todas abren sus búferes de lectura al mismo tiempo, lo que hace que el uso de memoria sea proporcional al número de subconsultas. Esta configuración inserta procesadores Concat para estrechar el pipeline, de modo que como máximo haya esta cantidad de flujos activos a la vez, lo que reduce drásticamente el pico de memoria. El límite real es el mínimo entre este valor y max_threads * max_streams_for_union_step_to_max_threads_ratio (si cualquiera de los dos es 0, se ignora). Cuando ambos son 0, no se aplica ningún estrechamiento. El límite tampoco se aplica cuando el plan de consulta requiere que cada flujo de salida del UNION permanezca ordenado de forma independiente (por ejemplo, cuando la optimización de lectura en orden se aplica a todo el UNION); en ese caso, la corrección del orden tiene prioridad y se omite el estrechamiento.
max_streams_for_union_step_to_max_threads_ratio
max_threads, determina el límite de flujos activos simultáneamente en un paso UNION (se aplica tanto a UNION ALL como a UNION DISTINCT). El límite real es el mínimo entre este valor calculado y max_streams_for_union_step (si cualquiera de los dos es 0, se ignora). Por ejemplo, con max_threads = 8 y esta proporción establecida en 1, habrá como máximo 8 flujos activos. Establézcala en 0 para desactivar este límite basado en la proporción. Al igual que max_streams_for_union_step, el límite no se aplica cuando el plan de consulta requiere que cada flujo de salida de UNION permanezca ordenado individualmente.