> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-parallel-read-in-order-multi-part.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# distributed_plan_* セッション設定

> ClickHouse の distributed_plan_* 生成グループに含まれるセッション設定。

export const PrivatePreviewBadge = () => {
  return <div className="privatePreviewBadge">
            <div className="privatePreviewIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path d="M5.33301 6.66667V4.66667V4.66667C5.33301 3.194 6.52701 2 7.99967 2V2C9.47234 2 10.6663 3.194 10.6663 4.66667V4.66667V6.66667" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path d="M8.00033 9.33337V11.3334" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path fillRule="evenodd" clipRule="evenodd" d="M11.333 14H4.66634C3.92967 14 3.33301 13.4033 3.33301 12.6666V7.99996C3.33301 7.26329 3.92967 6.66663 4.66634 6.66663H11.333C12.0697 6.66663 12.6663 7.26329 12.6663 7.99996V12.6666C12.6663 13.4033 12.0697 14 11.333 14Z" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            {'プライベートプレビュー'}
        </div>;
};

export const ExperimentalBadge = () => {
  return <a href="https://clickhouse.com/docs/reference/settings/beta-and-experimental-features#experimental-features" className="experimentalBadge">
            <div className="experimentalIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.25" d="M5.5 2H10.5" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M9.50015 2V6.19625L13.4283 12.7425C13.4738 12.8183 13.4985 12.9049 13.4996 12.9934C13.5008 13.0818 13.4785 13.169 13.435 13.246C13.3914 13.323 13.3283 13.3871 13.2519 13.4317C13.1755 13.4764 13.0886 13.4999 13.0002 13.5H3.00015C2.91164 13.5 2.8247 13.4766 2.74822 13.432C2.67174 13.3874 2.60847 13.3233 2.56487 13.2463C2.52126 13.1693 2.49889 13.082 2.50004 12.9935C2.50119 12.905 2.52582 12.8184 2.5714 12.7425L6.50015 6.19625V2" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M4.47656 9.56754C5.30344 9.41254 6.47656 9.47942 7.99969 10.25C10.0153 11.2707 11.4216 11.0569 12.2184 10.7282" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            実験的な機能
        </a>;
};

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) から自動生成されています。

## distributed\_plan\_default\_reader\_bucket\_count

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "8"},{"label": "新しい実験的な設定"}]}]} />

分散クエリで並列読み取りを行う際のデフォルトのタスク数です。タスクはレプリカ間に分散されます。
ルールベースの分散プランナーで使用されます。コストベースのオプティマイザは推定コストに基づいて読み取りのファンアウトを選択するため、この設定は使用しません。

## distributed\_plan\_default\_shuffle\_join\_bucket\_count

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "8"},{"label": "新しい実験的な設定"}]}]} />

分散 shuffle-hash-join のデフォルトのバケット数。
ルールベースの分散プランナーで使用されます。コストベースのオプティマイザは推定コストに基づいてファンアウトを選択するため、この設定は使用しません。

## distributed\_plan\_execute\_locally

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "0"},{"label": "新しい実験的な設定"}]}]} />

分散クエリプランのすべてのタスクをローカルで実行します。テストやデバッグに有用です。

## distributed\_plan\_fallback\_to\_local\_execution

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "1"},{"label": "プランを分散化できない場合にローカル実行へフォールバックするための新しい設定（`make_distributed_plan` が有効な場合にのみ有効になります）。"}]}]} />

クエリプランに分散実行に対応していないステップが含まれている場合、例外をスローするのではなく、その理由をログに記録してイニシエーター上でクエリを実行します。無効にすると、代わりに例外がスローされます。

`make_distributed_plan` (プライベートプレビュー) が有効な場合にのみ有効になります。

## distributed\_plan\_force\_exchange\_kind

<ExperimentalBadge />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": ""},{"label": "新しい実験的な設定"}]}]} />

分散クエリのステージ間で、指定した種類の Exchange 演算子を強制します。

設定可能な値:

* '' - どの種類の Exchange 演算子も強制せず、オプティマイザに選択させます。
* 'Persisted' - オブジェクトストレージ内の一時ファイルを使用します。
* 'Streaming' - Exchange データをネットワーク経由でストリーミングします。

## distributed\_plan\_force\_shuffle\_aggregation

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "0"},{"label": "新しい実験的な設定"}]}]} />

分散クエリプランでは、PartialAggregation + Merge の代わりに Shuffle 集約戦略を使用します。
Shuffle 戦略が正しい結果を生成できない場合、たとえば `GROUPING SETS` の場合や、集約が bucket 順で結果を生成しなければならない場合には無視されます。

## distributed\_plan\_max\_rows\_to\_broadcast

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "20000"},{"label": "新しい実験的な設定"}]}]} />

分散クエリプランで、shuffle join の代わりに broadcast join を使用する際の最大行数。
ルールベースの分散プランナーにおけるヒューリスティックです。コストベースのオプティマイザが有効な場合、broadcast と shuffle の選択は推定コストに基づいて行われるため、この設定は効果がありません。

## distributed\_plan\_optimize\_exchanges

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "1"},{"label": "新しい実験的な設定"}]}]} />

分散クエリプラン内の不要な Exchange を削除します。デバッグ時は無効にしてください。

## distributed\_plan\_prefer\_replicas\_over\_workers

<PrivatePreviewBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "レプリカ用に分散プランをシリアライズする新しい設定"}]}]} />

レプリカで実行できるよう、分散クエリプランをシリアライズします。

## distributed\_plan\_read\_in\_order

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "0"},{"label": "分散クエリプランにおける `ORDER BY` の read-in-order 最適化を有効にできるようにする新しい設定。テーブルのソーティングキー順に読み取ることで、ソートを省略して早期に処理を打ち切れます。デフォルトでは無効です。現時点で安全なのは、読み取りとソートの間に exchange が残らない shape のみです。"}]}]} />

分散クエリプランにおける `ORDER BY` の read-in-order 最適化を許可します。これにより、スキャンしてソートする代わりに、テーブルのソーティングキー順に読み取ることでソートを省略し、早期に処理を打ち切れます。

デフォルトでは無効です。ソートを分散させる rewrite は、対象のソートが「入力が既に順序付けられていること」に依存しないことを前提としていますが、実際に依存するソートに対しては、順序を保持しない exchange を経由して行が供給される可能性があります。現時点で安全なのは、読み取りとソートの間に exchange が残らない shape のみです。

## distributed\_plan\_workers\_num

<PrivatePreviewBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "0"},{"label": "分散クエリ用にリースするステートレスワーカー数に関する新しい実験的な設定です。0 を指定するとリースは無効になります。"}]}]} />

このクエリの実行に使用するステートレスワーカーの数。0 を指定すると、分散プランでのステートレスワーカーのリースは無効になります。

## distributed\_plan\_workers\_provisioning\_timeout\_ms

<PrivatePreviewBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "10000"},{"label": "実行前にリースされたステートレスワーカーが到達可能になるまでクエリが待機する時間を制限する新しい設定。"}]}, {"id": "row-2","items": [{"label": "26.8"},{"label": "10000"},{"label": "実行前にリースされたステートレスワーカーが到達可能になるまでクエリが待機する時間を制限する新しい設定。26.8 未満の `compatibility` では、以前の待機なしの動作に復元されます。"}]}]} />

実行前に、クエリがステートレスワーカーのプロビジョニングに費やせる合計実時間 (ミリ秒) 。これには、discovery service からのワーカーのリースと、その到達可能性の検証が含まれます。クエリは、リースされたワーカーの準備が完了するまで、この時間の範囲内でブロックします。時間切れになると、それまでに検証済みのワーカーでクエリを続行するか、利用可能なワーカーが1つもない場合は失敗します。ゼロの場合は、最初のリースと検証のパスでのみ待機します (再試行は行いません) 。
