> ## 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/ja/reference/system-tables/settings) で確認でき、[source](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/ja/reference/statements/select/group-by#group-by-in-external-memory) を参照)

設定可能な値:

* 1 回の [GROUP BY](/docs/ja/reference/statements/select/group-by) 操作で使用できる RAM の最大量 (バイト単位) 。
* `0` — 外部メモリでの `GROUP BY` は無効。

<Note>
  GROUP BY 操作中のメモリ使用量がこのしきい値 (バイト単位) を超えると、
  「外部集約」モードが有効になり、中間データがディスクに書き出されます。

  推奨値は、利用可能なシステムメモリの半分です。
</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` に設定してください。これにより、JOIN 最適化による順序どおりの読み取りは行えなくなります。

<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/ja/reference/statements/select/order-by#implementation-details)を参照してください。
`ORDER BY` 操作中のメモリ使用量がこのしきい値をバイト単位で超えると、「外部ソート」モード (中間データをディスクに書き出す) が有効になります。

設定可能な値:

* 1 回の [ORDER BY](/docs/ja/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 最適化で使用される Set の最大バイト数に関する新しい設定"}]}]} />

遅延 FINAL 最適化で使用される Set の最大バイト数です。これを超えると、通常の 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" />

テーブルの join 時に使用される右側のデータ構造 (通常はハッシュ
テーブル) の最大サイズ (バイト単位) です。

この設定は、[SELECT ... JOIN](/docs/ja/reference/statements/select/join)
操作と [Join テーブルエンジン](/docs/ja/reference/engines/table-engines/special/join) に適用されます。

1 つのクエリに複数の join が含まれる場合、ClickHouse は各
中間結果に対してこの設定をチェックします。上限に達した場合の動作は、
選択した [`join_algorithm`](/docs/ja/reference/settings/session-settings/join#join_algorithm) によって異なります。アルゴリズムごとの動作 (spill、再パーティション化、切り替え、または
[`join_overflow_mode`](/docs/ja/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 句内のSetで使用される、非圧縮データの最大バイト数。

<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` は実行開始時点で利用可能メモリ
(server/user/merges に割り当てられたメモリ) の 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` と組み合わせて使用され、2 つのうち小さい方が適用されます。"}]}]} />

`JOIN` に使用できる利用可能メモリの比率です。この値に達すると、ハッシュ結合は Grace Hash Join に変換され、右側のデータがディスクにスピルされます。

たとえば `0.6` に設定すると、`JOIN` は実行開始時に、右側のハッシュテーブルに対して利用可能メモリ (server/user/merges 用) の `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` は実行開始時に利用可能メモリ (server/user/merges) の `60%` まで使用できます。それを超えると、外部ソートの使用が開始されます。

なお、`max_bytes_before_external_sort` は引き続き適用されるため、ディスクへのスピルが行われるのは、ソート対象のブロックが `max_bytes_before_external_sort` より大きい場合だけです。

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

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

クエリの実行時に、テーブルから読み取れる最大バイト数 (非圧縮データ) です。
この制限は、処理されるデータの各 chunk ごとにチェックされ、最も深いテーブル式にのみ適用されます。リモートサーバーから読み取る場合は、リモートサーバー上でのみチェックされます。

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

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

分散クエリの実行時に、リーフノード上のローカル
テーブルから読み取れるバイト数 (非圧縮データ) の最大値です。分散クエリ
では各分片 (leaf) に対して複数のサブクエリを発行できますが、この制限が
チェックされるのはリーフノードでの読み取り段階のみであり、ルートノードでの結果の
マージ段階では無視されます。

たとえば、あるクラスターが 2 つの分片で構成され、各分片に
100 バイトのデータを持つテーブルが含まれているとします。両方のテーブルから
すべてのデータを読み取る分散クエリは、`max_bytes_to_read=150` が設定されていると、
合計で 200 バイトになるため失敗します。一方、`max_bytes_to_read_leaf=150` を
設定したクエリは成功します。これは、リーフノードでは最大 100 バイトしか
読み取られないためです。

この制限は、処理されるデータの各 chunk ごとにチェックされます。

<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 セクションの実行時に、リモートサーバーに渡される、または一時テーブルに保存される最大バイト数 (非圧縮データ) 。
