Skip to main content
이러한 설정은 system.settings에서 확인할 수 있으며, 소스 코드에서 자동 생성됩니다.

max_streams_for_files_processing_in_cluster_functions

0이 아닌 경우, *Cluster 테이블 함수에서 파일에서 데이터를 읽는 스레드 수를 제한합니다.

max_streams_for_merge_tree_reading

0이 아니면 MergeTree 테이블을 읽을 때 사용하는 스트림 수를 제한합니다.

max_streams_for_union_step

UNION 단계에서 동시에 활성 상태가 될 수 있는 데이터 스트림 수를 제한합니다(UNION DISTINCTUNION ALL 단계 다음에 DISTINCT 단계를 적용하는 방식으로 구현되므로 UNION ALLUNION DISTINCT 모두에 적용됩니다). UNION 쿼리에 서브쿼리가 많으면 모든 서브쿼리가 동시에 읽기 버퍼를 열게 되어 메모리 사용량이 서브쿼리 수에 비례하게 됩니다. 이 설정은 Concat 프로세서를 삽입해 파이프라인을 좁힘으로써 한 번에 이 개수까지만 스트림이 활성 상태가 되도록 하며, 그 결과 최대 메모리 사용량을 크게 줄입니다. 실제 제한값은 이 값과 max_threads * max_streams_for_union_step_to_max_threads_ratio 중 더 작은 값입니다(둘 중 하나라도 0이면 해당 값은 무시됩니다). 둘 다 0이면 파이프라인 축소가 적용되지 않습니다. 또한 쿼리 계획상 UNION의 각 출력 스트림이 개별적으로 정렬 상태를 유지해야 하는 경우에는 이 제한이 적용되지 않습니다(예를 들어 UNION 전반에 걸쳐 read-in-order 최적화가 적용되는 경우). 이런 경우에는 정렬의 정확성이 precedence를 가지므로 파이프라인 축소를 건너뜁니다.

max_streams_for_union_step_to_max_threads_ratio

이 비율에 max_threads를 곱한 값으로 UNION 단계에서 동시에 활성화되는 스트림 수의 제한이 결정됩니다(UNION ALLUNION DISTINCT 모두에 적용됨). 실제 제한은 이 계산값과 max_streams_for_union_step 중 더 작은 값입니다(둘 중 하나가 0이면 무시됨). 예를 들어 max_threads = 8이고 이 비율을 1로 설정하면, 최대 8개의 스트림이 활성화됩니다. 이 비율 기반 제한을 비활성화하려면 0으로 설정하십시오. max_streams_for_union_step과 마찬가지로, 쿼리 계획상 UNION의 각 출력 스트림이 개별적으로 정렬 상태를 유지해야 하는 경우에는 이 제한이 적용되지 않습니다.

max_streams_multiplier_for_merge_tables

Merge 테이블에서 읽을 때 더 많은 스트림을 요청합니다. 스트림은 Merge 테이블이 사용하는 테이블들에 분산됩니다. 이렇게 하면 작업이 스레드 간에 더 고르게 분배되며, 특히 머지된 테이블들의 크기가 서로 다를 때 더욱 유용합니다.

max_streams_to_max_threads_ratio

스레드 수보다 더 많은 소스를 사용할 수 있게 하여 작업이 스레드 전체에 보다 고르게 분산되도록 합니다. 이는 임시적인 해결책으로 간주됩니다. 향후에는 소스 수를 스레드 수와 같게 유지하면서도, 각 소스가 자신에게 사용 가능한 작업을 동적으로 선택할 수 있게 될 것으로 예상되기 때문입니다.
마지막 수정일 2026년 7월 23일