> ## 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_bytes_* 세션 설정

> max_bytes_* 자동 생성 그룹의 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_bytes_before_external_group_by">
  ## max\_bytes\_before\_external\_group\_by
</div>

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

Cloud 기본값: 레플리카당 메모리 용량의 절반입니다.

외부 메모리에서 `GROUP BY` 절을 실행할지 여부를 설정합니다.
([외부 메모리에서의 GROUP BY](/docs/ko/reference/statements/select/group-by#group-by-in-external-memory) 참조)

가능한 값:

* 단일 [GROUP BY](/docs/ko/reference/statements/select/group-by) 작업에 사용할 수 있는 최대 RAM 용량(바이트)입니다.
* `0` — 외부 메모리에서 `GROUP BY`를 실행하지 않습니다.

<Note>
  GROUP BY 작업 중 메모리 사용량이 이 바이트 단위 임계값을 초과하면
  '외부 집계(external aggregation)' 모드가 활성화됩니다(중간 데이터를 디스크에 스필).

  권장 값은 사용 가능한 시스템 메모리의 절반입니다.
</Note>

<div id="max_bytes_before_external_join">
  ## max\_bytes\_before\_external\_join
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "해시 조인의 자동 디스크 스필을 제어하는 새로운 설정입니다. 0이 아닌 값을 지정하면 스필이 활성화되고 바이트 임계값이 설정됩니다."}]}]} />

0이 아닌 값으로 설정하고 `join_algorithm`이 `hash`, `parallel_hash`, `default` 또는 `auto`인 경우, 오른쪽 데이터가 이 바이트 수를 초과하면 디스크로 스필할 수 있도록 해시 조인이 자동으로 grace hash join으로 변환됩니다. `0`(기본값)으로 설정하면 이 절대 바이트 임계값은 비활성화되지만, `max_bytes_ratio_before_external_join`(기본값 `0.5`)을 통해 자동 스필이 계속 발생할 수 있습니다. 자동 스필을 완전히 비활성화하려면 두 값 모두 `0`으로 설정하십시오. 이 설정을 사용하면 조인을 통한 read in order 최적화는 적용되지 않습니다.

<div id="max_bytes_before_external_sort">
  ## max\_bytes\_before\_external\_sort
</div>

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

Cloud 기본값: 레플리카당 메모리 용량의 절반입니다.

`ORDER BY` 절을 외부 메모리를 사용해 실행할지 여부를 설정합니다. [ORDER BY 구현 세부 사항](/docs/ko/reference/statements/select/order-by#implementation-details)을 참조하십시오.
`ORDER BY` 작업 중 메모리 사용량이 바이트 단위의 이 임계값을 초과하면 "외부 정렬" 모드(중간 데이터를 디스크에 스필)가 활성화됩니다.

가능한 값:

* 단일 [ORDER BY](/docs/ko/reference/statements/select/order-by) 작업에 사용할 수 있는 최대 RAM 용량(바이트)입니다.
  권장 값은 사용 가능한 시스템 메모리의 절반입니다.
* `0` — 외부 메모리를 사용하는 `ORDER BY`가 비활성화됩니다.

<div id="max_bytes_before_remerge_sort">
  ## max\_bytes\_before\_remerge\_sort
</div>

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

ORDER BY와 LIMIT를 함께 사용하는 경우, 메모리 사용량이 지정된 임계값을 초과하면 상위 LIMIT개 행만 유지하도록 최종 머지 전에 블록을 추가로 머지합니다.

<div id="max_bytes_for_lazy_final">
  ## max\_bytes\_for\_lazy\_final
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "256000000"},{"label": "지연 실행 FINAL 최적화에서 사용하는 집합의 최대 바이트 수에 대한 새로운 설정"}]}]} />

지연 실행 FINAL 최적화에서 사용하는 집합의 최대 바이트 수입니다. 이 값을 초과하면 일반 FINAL로 되돌아갑니다.

<div id="max_bytes_in_distinct">
  ## max\_bytes\_in\_distinct
</div>

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

DISTINCT를 사용할 때 해시 테이블이 사용하는 메모리 내 상태의 최대 크기(비압축 바이트 기준)입니다.

<div id="max_bytes_in_join">
  ## max\_bytes\_in\_join
</div>

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

테이블 조인 시 사용되는 오른쪽 데이터 구조(일반적으로 해시
테이블)의 최대 크기(바이트)입니다.

이 설정은 [SELECT ... JOIN](/docs/ko/reference/statements/select/join)
연산과 [Join 테이블 엔진](/docs/ko/reference/engines/table-engines/special/join)에 적용됩니다.

쿼리에 여러 개의 조인이 포함된 경우 ClickHouse는 모든
중간 결과에 대해 이 설정을 확인합니다. 제한에 도달하면 동작은
선택한 [`join_algorithm`](/docs/ko/reference/settings/session-settings/join#join_algorithm)에 따라 달라집니다. 알고리즘별 동작(spill, 재파티셔닝, 전환 또는
[`join_overflow_mode`](/docs/ko/reference/settings/session-settings/join#join_overflow_mode)에 따른 throw/break)은 해당 설정을 참조하십시오.

가능한 값:

* 양의 정수
* 0 — 메모리 제어가 비활성화됩니다.

<div id="max_bytes_in_set">
  ## max\_bytes\_in\_set
</div>

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

서브쿼리로 생성된 IN 절의 집합에서 사용할 수 있는 최대 바이트 수(비압축 데이터 기준)입니다.

<div id="max_bytes_ratio_before_external_group_by">
  ## max\_bytes\_ratio\_before\_external\_group\_by
</div>

<SettingsInfoBlock type="Double" default_value="0.5" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "0.5"},{"label": "기본적으로 디스크로 자동 스필을 활성화합니다."}]}, {"id": "row-2","items": [{"label": "24.12"},{"label": "0"},{"label": "새 설정입니다."}]}]} />

가용 메모리 중 `GROUP BY`에 사용할 수 있는 비율입니다. 이 값에 도달하면
집계를 위해 외부 메모리를 사용합니다.

예를 들어 `0.6`으로 설정하면 실행 시작 시 `GROUP BY`는 가용 메모리의 60%
(서버/사용자/머지 기준)까지 사용할 수 있으며, 이후에는
외부 집계를 사용하기 시작합니다.

<div id="max_bytes_ratio_before_external_join">
  ## max\_bytes\_ratio\_before\_external\_join
</div>

<SettingsInfoBlock type="Double" default_value="0.5" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0.5"},{"label": "새로운 설정: 해시 조인의 스필 임계값으로 사용되는 가용 메모리 비율입니다. 기본값은 `0.5`이며, `max_bytes_ratio_before_external_group_by` 및 `max_bytes_ratio_before_external_sort`와 동일한 방식으로 활성화됩니다. 절대값 설정인 `max_bytes_before_external_join`과 함께 사용되며, 둘 중 더 작은 값이 적용됩니다."}]}]} />

`JOIN`에 사용할 수 있는 가용 메모리 비율입니다. 이 값에 도달하면 해시 조인이 grace hash join으로 전환되어 오른쪽 데이터를 디스크로 스필합니다.

예를 들어 `0.6`으로 설정하면 실행 시작 시 `JOIN`의 오른쪽 해시 테이블이 가용 메모리(서버/사용자/머지에 할당된 메모리 기준)의 `60%`까지 사용할 수 있으며, 그 이후부터는 디스크로 스필하기 시작합니다.

`max_bytes_before_external_join`과 `max_bytes_ratio_before_external_join`이 모두 설정된 경우 계산된 임계값 중 더 작은 값이 사용됩니다. 비율이 `0`이면 절대값 설정만 적용됩니다.

`join_algorithm`이 `hash`, `parallel_hash`, `default`, `auto` 중 하나이고 임시 데이터 경로가 구성된 경우에만 적용됩니다.

<div id="max_bytes_ratio_before_external_sort">
  ## max\_bytes\_ratio\_before\_external\_sort
</div>

<SettingsInfoBlock type="Double" default_value="0.5" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "0.5"},{"label": "기본적으로 디스크 자동 스필을 활성화합니다."}]}, {"id": "row-2","items": [{"label": "24.12"},{"label": "0"},{"label": "새 설정입니다."}]}]} />

`ORDER BY`에 사용할 수 있는 가용 메모리의 비율입니다. 이 값에 도달하면 외부 정렬이 사용됩니다.

예를 들어 `0.6`으로 설정하면 실행 시작 시 `ORDER BY`에서 가용 메모리(서버/사용자/머지 기준)의 `60%`까지 사용할 수 있고, 그 이후부터는 외부 정렬을 사용하기 시작합니다.

참고로 `max_bytes_before_external_sort`는 계속 적용되며, 정렬 block이 `max_bytes_before_external_sort`보다 큰 경우에만 디스크로 스필됩니다.

<div id="max_bytes_to_read">
  ## max\_bytes\_to\_read
</div>

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

쿼리 실행 시 테이블에서 읽을 수 있는 최대 바이트 수(압축되지 않은 데이터 기준)입니다.
이 제한은 처리되는 각 데이터 청크마다 확인되며,
가장 안쪽의 테이블 표현식에만 적용됩니다. 원격 서버에서 읽는 경우에는
원격 서버에서만 확인됩니다.

<div id="max_bytes_to_read_leaf">
  ## max\_bytes\_to\_read\_leaf
</div>

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

분산 쿼리를 실행할 때 리프 노드의 로컬
테이블에서 읽을 수 있는 최대 바이트 수(비압축 데이터 기준)입니다. 분산 쿼리는
각 세그먼트(리프)에 여러 개의 하위 쿼리를 보낼 수 있지만, 이 제한은
리프 노드의 읽기 단계에서만 검사되며 루트 노드에서 결과를
병합하는 단계에서는 무시됩니다.

예를 들어, 클러스터가 2개의 세그먼트로 구성되어 있고 각 세그먼트에
100바이트의 데이터가 있는 테이블이 있다고 가정합니다. `max_bytes_to_read=150`
설정으로 두 테이블의 모든 데이터를 읽도록 하는 분산 쿼리는 전체 크기가
200바이트가 되므로 실패합니다. `max_bytes_to_read_leaf=150`인 쿼리는
리프 노드가 최대 100바이트만 읽으므로 성공합니다.

이 제한은 처리되는 각 데이터 청크에 대해 검사됩니다.

<Note>
  이 설정은 `prefer_localhost_replica=1`과 함께 사용할 때 안정적이지 않습니다.
</Note>

<div id="max_bytes_to_sort">
  ## max\_bytes\_to\_sort
</div>

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

정렬 전에 처리할 수 있는 최대 바이트 수입니다. ORDER BY 작업에서 지정된 양보다 많은
비압축 바이트를 처리해야 하는 경우, 동작은 `sort_overflow_mode`에 따라
결정되며 기본값은 `throw`입니다.

<div id="max_bytes_to_transfer">
  ## max\_bytes\_to\_transfer
</div>

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

GLOBAL IN/JOIN 절이 실행될 때 원격 서버로 전달하거나 임시 테이블에 저장할 수 있는 최대 바이트 수(비압축 데이터)입니다.
