> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-postgresql-tls-support.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# max_threads_* セッション設定

> max_threads_* グループに属する ClickHouse のセッション設定。

export const VersionHistory = ({rows = []}) => {
  if (rows.length === 0) {
    return null;
  }
  const headers = ["バージョン", "デフォルト値", "コメント"];
  const border = "1px solid rgba(128, 128, 128, 0.3)";
  const cell = {
    border,
    padding: "0.25rem 0.5rem",
    textAlign: "start",
    verticalAlign: "top"
  };
  return <details className="not-prose" style={{
    border,
    borderRadius: "0.5rem",
    margin: "0.5rem 0",
    padding: "0.5rem 0.75rem",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <summary style={{
    cursor: "pointer",
    fontWeight: 600,
    opacity: 0.72
  }}>
        バージョン履歴
      </summary>
      <table style={{
    borderCollapse: "collapse",
    width: "100%",
    margin: "0.5rem 0 0"
  }}>
        <thead>
          <tr>
            {headers.map(header => <th key={header} style={{
    ...cell,
    fontWeight: 600,
    opacity: 0.72
  }}>
                {header}
              </th>)}
          </tr>
        </thead>
        <tbody>
          {rows.map((row, row_index) => <tr key={row.id ?? row_index}>
              {(row.items ?? []).map((item, item_index) => <td key={item_index} style={{
    ...cell,
    overflowWrap: "anywhere"
  }}>
                  {item?.label}
                </td>)}
            </tr>)}
        </tbody>
      </table>
    </details>;
};

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](/ja/reference/system-tables/settings) で確認でき、[ソースコード](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp) から自動生成されています。

<div id="max_threads">
  ## max\_threads
</div>

<SettingsInfoBlock type="MaxThreads" default_value="auto(N)" />

クエリ処理スレッドの最大数です。リモートサーバーからデータを取得するためのスレッドは含まれません (['max\_distributed\_connections'](/ja/reference/settings/session-settings/max-distributed#max_distributed_connections) パラメータを参照) 。

このパラメータは、クエリ処理パイプライン内の同じステージを並列に実行するスレッドに適用されます。
たとえば、table から読み取る際に、少なくとも 'max\_threads' 本のスレッドを使って、関数を含む式の評価、`WHERE` による絞り込み、`GROUP BY` の事前集約を並列に実行できる場合は、'max\_threads' が使用されます。

LIMIT によってすぐに完了するクエリでは、'max\_threads' をより小さく設定できます。
たとえば、必要なエントリがすべての block に含まれていて max\_threads = 8 の場合、1 つだけ読めば十分であっても 8 個の block が取得されます。
`max_threads` の値が小さいほど、消費メモリは少なくなります。

`max_threads` 設定のデフォルト値は、ClickHouse で利用可能なハードウェアスレッド数 (CPU コア数) と同じです。
特例として、32 CPU コア未満で SMT (例: Intel HyperThreading) を備えた x86 プロセッサでは、ClickHouse はデフォルトで論理コア数 (= 物理コア数 x 2) を使用します。

SMT (例: Intel HyperThreading) がない場合、これは CPU コア数に対応します。

ClickHouse Cloud ユーザーの場合、デフォルト値は `auto(N)` と表示されます。ここで N は、2vCPU/8GiB、4vCPU/16GiB など、サービスの vCPU サイズに対応します。
すべてのサービスサイズの一覧は、Cloud Console の Settings タブを参照してください。

<div id="max_threads_for_indexes">
  ## max\_threads\_for\_indexes
</div>

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

索引の処理に使用するスレッドの最大数。

<div id="max_threads_min_free_memory_per_thread">
  ## max\_threads\_min\_free\_memory\_per\_thread
</div>

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

サーバーがメモリ逼迫状態にある場合、`max_threads` を引き下げて、メモリ制限に達する可能性が高い高並列のクエリが開始されるのを防ぎます。

空きメモリは、サーバーの `max_server_memory_usage` から、グローバルメモリトラッカーで現在追跡されているメモリ使用量を差し引いて算出されます。この空きメモリが `max_threads` にこの値を掛けた値より小さい場合、`max_threads` は `N * value <= free_memory` を満たす最大の N まで引き下げられ、最小値は `1` です。

この制限を無効にするには、`0` に設定します。

たとえば、デフォルト値の 1 GiB で空きメモリが 32 GiB の場合、`max_threads` の上限は 32 になります。空きメモリが 1 GiB の場合は 1 まで下がります。

この設定は、読み取り側の並列度 (`SELECT`、`UNION`、`INTERSECT`/`EXCEPT`、および `INSERT ... SELECT` の `SELECT` 側) に適用されます。書き込み側については、`max_insert_threads_min_free_memory_per_thread` を参照してください。
