> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# max_streams_* 세션 설정

> max_streams_* 자동 생성 그룹의 ClickHouse 세션 설정입니다.

export const SettingsInfoBlock = ({type, default_value, changeable_without_restart}) => {
  return <div className="not-prose" style={{
    display: "flex",
    flexWrap: "wrap",
    alignItems: "baseline",
    columnGap: "0.5rem",
    rowGap: "0.125rem",
    margin: "0.375rem 0",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <div style={{
    fontWeight: 600,
    opacity: 0.72
  }}>유형</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{type}</div>
      <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>기본값</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{default_value}</div>
      {changeable_without_restart && <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>
          재시작 없이 변경 가능
        </div>}
      {changeable_without_restart && <div style={{
    overflowWrap: "anywhere"
  }}>
          {changeable_without_restart}
        </div>}
    </div>;
};

이러한 설정은 [system.settings](/docs/ko/reference/system-tables/settings)에서 확인할 수 있으며, [소스 코드](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp)에서 자동 생성됩니다.

<div id="max_streams_for_files_processing_in_cluster_functions">
  ## max\_streams\_for\_files\_processing\_in\_cluster\_functions
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "0"},{"label": "*Cluster 테이블 함수에서 파일 처리용 스트림 수를 제한할 수 있는 새로운 설정을 추가했습니다"}]}]} />

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

<div id="max_streams_for_merge_tree_reading">
  ## max\_streams\_for\_merge\_tree\_reading
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

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

<div id="max_streams_for_union_step">
  ## max\_streams\_for\_union\_step
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0"},{"label": "최대 메모리 사용량을 줄이기 위해 `UNION` 단계에서 동시에 활성 상태가 될 수 있는 데이터 스트림 수를 제한하는 새로운 설정입니다."}]}]} />

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

<div id="max_streams_for_union_step_to_max_threads_ratio">
  ## max\_streams\_for\_union\_step\_to\_max\_threads\_ratio
</div>

<SettingsInfoBlock type="Float" default_value="8" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "8"},{"label": "새로운 설정: UNION 단계에서 동시에 활성화되는 스트림 수의 제한은 min(max_streams_for_union_step, max_threads * max_streams_for_union_step_to_max_threads_ratio)로 계산되며, 둘 중 하나가 0이면 해당 입력은 비활성화됩니다."}]}]} />

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

<div id="max_streams_multiplier_for_merge_tables">
  ## max\_streams\_multiplier\_for\_merge\_tables
</div>

<SettingsInfoBlock type="Float" default_value="5" />

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

<div id="max_streams_to_max_threads_ratio">
  ## max\_streams\_to\_max\_threads\_ratio
</div>

<SettingsInfoBlock type="Float" default_value="1" />

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