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

# Настройки сеанса parallel_replicas_*

> Настройки сеанса ClickHouse в автоматически созданной группе parallel_replicas_*.

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>;
};

export const BetaBadge = ({link, galaxyTrack, galaxyEvent}) => {
  if (link) {
    return <a href={link} target="_blank" rel="noopener noreferrer" className="betaBadge" onClick={galaxyTrack && galaxyEvent ? galaxyOnClick(galaxyEvent) : undefined}>
                <span>Бета</span>
            </a>;
  }
  return <a href="/ru/reference/settings/beta-and-experimental-features#beta-features" className="betaBadge">
            <span>Возможность в статусе бета</span>
        </a>;
};

export const ExperimentalBadge = () => {
  return <a href="/ru/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>;
};

Эти настройки доступны в [system.settings](/ru/reference/system-tables/settings) и автоматически сгенерированы на основе [исходного кода](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp).

<div id="parallel_replicas_allow_in_with_subquery">
  ## parallel\_replicas\_allow\_in\_with\_subquery
</div>

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

Если значение true, подзапрос для IN будет выполняться на каждой реплике-follower.

<div id="parallel_replicas_allow_materialized_views">
  ## parallel\_replicas\_allow\_materialized\_views
</div>

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

Разрешить использование материализованных представлений с параллельными репликами

<div id="parallel_replicas_allow_view_over_mergetree">
  ## parallel\_replicas\_allow\_view\_over\_mergetree
</div>

<BetaBadge />

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

Разрешает параллельным репликам выполнять внешний запрос простого представления над таблицами `MergeTree` (вместо внутреннего запроса представления), что улучшает распараллеливание между узлами. Также применяется к представлениям `UNION ALL`, все ветви которых читают из разных таблиц `MergeTree`.

<div id="parallel_replicas_connect_timeout_ms">
  ## parallel\_replicas\_connect\_timeout\_ms
</div>

<SettingsInfoBlock type="Milliseconds" default_value="300" />

Тайм-аут в миллисекундах для подключения к удалённой реплике во время выполнения запроса в режиме параллельных реплик. Если тайм-аут истекает, соответствующая реплика не используется для выполнения запроса

<div id="parallel_replicas_count">
  ## parallel\_replicas\_count
</div>

<BetaBadge />

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

Это внутренняя настройка, её не следует использовать напрямую: она отражает детали реализации режима «параллельных реплик». Для распределённых запросов сервер-инициатор автоматически устанавливает её в значение, равное числу параллельных реплик, участвующих в обработке запроса.

<div id="parallel_replicas_custom_key">
  ## parallel\_replicas\_custom\_key
</div>

<BetaBadge />

Произвольное целочисленное выражение, которое можно использовать для распределения работы между репликами для конкретной таблицы.
Значением может быть любое целочисленное выражение.

Предпочтительны простые выражения на основе первичных ключей.

Если эта настройка используется в кластере, состоящем из одного сегмента и нескольких реплик, эти реплики будут преобразованы в виртуальные сегменты.
В противном случае она будет работать так же, как ключ `SAMPLE`: будут использоваться несколько реплик каждого сегмента.

<div id="parallel_replicas_custom_key_range_lower">
  ## parallel\_replicas\_custom\_key\_range\_lower
</div>

<BetaBadge />

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

Позволяет фильтру типа `range` равномерно распределять нагрузку между репликами на основе пользовательского диапазона `[parallel_replicas_custom_key_range_lower, INT_MAX]`.

При использовании вместе с [parallel\_replicas\_custom\_key\_range\_upper](/ru/reference/settings/session-settings/parallel-replicas#parallel_replicas_custom_key_range_upper) позволяет фильтру равномерно распределять нагрузку между репликами в диапазоне `[parallel_replicas_custom_key_range_lower, parallel_replicas_custom_key_range_upper]`.

Примечание: эта настройка не приводит к дополнительной фильтрации данных при обработке запросов, а лишь изменяет точки, в которых фильтр диапазона разбивает диапазон `[0, INT_MAX]` для параллельной обработки.

<div id="parallel_replicas_custom_key_range_upper">
  ## parallel\_replicas\_custom\_key\_range\_upper
</div>

<BetaBadge />

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

Позволяет фильтру типа `range` равномерно распределять работу между репликами на основе настраиваемого диапазона `[0, parallel_replicas_custom_key_range_upper]`. Значение 0 отключает верхнюю границу и устанавливает её равной максимальному значению выражения пользовательского ключа.

При использовании вместе с [parallel\_replicas\_custom\_key\_range\_lower](/ru/reference/settings/session-settings/parallel-replicas#parallel_replicas_custom_key_range_lower) эта настройка позволяет фильтру равномерно распределять работу между репликами для диапазона `[parallel_replicas_custom_key_range_lower, parallel_replicas_custom_key_range_upper]`.

Примечание: эта настройка сама по себе не приводит к дополнительной фильтрации данных при обработке запроса, а лишь изменяет точки, в которых фильтр диапазона разбивает диапазон `[0, INT_MAX]` для параллельной обработки

<div id="parallel_replicas_filter_pushdown">
  ## parallel\_replicas\_filter\_pushdown
</div>

<BetaBadge />

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

Разрешить pushdown фильтров в ту часть запроса, которую выполняют параллельные реплики

<div id="parallel_replicas_for_cluster_engines">
  ## parallel\_replicas\_for\_cluster\_engines
</div>

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

Заменяет движки табличных функций на соответствующие варианты -Cluster

<div id="parallel_replicas_for_non_replicated_merge_tree">
  ## parallel\_replicas\_for\_non\_replicated\_merge\_tree
</div>

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

Если установлено значение true, ClickHouse будет использовать алгоритм параллельных реплик и для нереплицируемых таблиц семейства MergeTree

<div id="parallel_replicas_index_analysis_only_on_coordinator">
  ## parallel\_replicas\_index\_analysis\_only\_on\_coordinator
</div>

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

Анализ индекса выполняется только на реплике-координаторе и не выполняется на других репликах. Действует только при включенном parallel\_replicas\_local\_pla

<div id="parallel_replicas_insert_select_local_pipeline">
  ## parallel\_replicas\_insert\_select\_local\_pipeline
</div>

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

Использовать локальный конвейер при распределённом INSERT SELECT с параллельными репликами

<div id="parallel_replicas_local_plan">
  ## parallel\_replicas\_local\_plan
</div>

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

Использовать локальный план для локальной реплики

<div id="parallel_replicas_mark_segment_size">
  ## parallel\_replicas\_mark\_segment\_size
</div>

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

Части логически разбиваются на сегменты, которые распределяются между репликами для параллельного чтения. Этот параметр задаёт размер этих сегментов. Не рекомендуется изменять его, пока вы не будете полностью уверены в том, что делаете. Значение должно находиться в диапазоне \[128; 16384]

<div id="parallel_replicas_min_number_of_rows_per_replica">
  ## parallel\_replicas\_min\_number\_of\_rows\_per\_replica
</div>

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

Ограничивает число реплик, используемых в запросе, значением (оценочное количество строк для чтения / min\_number\_of\_rows\_per\_replica). Максимальное значение по-прежнему ограничено параметром 'max\_parallel\_replicas'

<div id="parallel_replicas_mode">
  ## parallel\_replicas\_mode
</div>

<SettingsInfoBlock type="ParallelReplicasMode" default_value="read_tasks" />

Тип фильтра, используемого с пользовательским ключом для параллельных реплик. default — использовать операцию modulo для пользовательского ключа, range — использовать фильтр диапазона для пользовательского ключа с применением всех возможных значений типа значения этого ключа.

<div id="parallel_replicas_only_with_analyzer">
  ## parallel\_replicas\_only\_with\_analyzer
</div>

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

Чтобы использовать параллельные реплики, необходимо включить анализатор. Если анализатор отключен, выполнение запроса переключается на локальный режим, даже если включено параллельное чтение из реплик. Использование параллельных реплик без включенного анализатора не поддерживается

<div id="parallel_replicas_plan_based">
  ## parallel\_replicas\_plan\_based
</div>

<ExperimentalBadge />

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

Представляет локальную/удалённую границу параллельных реплик в виде преобразования плана. Планировщик строит обычный локальный план; затем над шагом чтения вставляется шаг split, который заменяется на `UNION` из локального и удалённого чтения части плана ниже шага split, благодаря чему этот фрагмент выполняется на репликах, а остальная часть — на координаторе. Экспериментальная; имеет приоритет над `parallel_replicas_local_plan`.

<div id="parallel_replicas_prefer_local_join">
  ## parallel\_replicas\_prefer\_local\_join
</div>

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

Если `true`, и JOIN можно выполнить с помощью алгоритма параллельных реплик, а все хранилища правой части JOIN — таблицы семейства \*MergeTree, будет использоваться локальный JOIN вместо GLOBAL JOIN.

<div id="parallel_replicas_prefer_local_replica">
  ## parallel\_replicas\_prefer\_local\_replica
</div>

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

Если включено (по умолчанию), локальная реплика всегда включается в набор реплик, используемых для параллельного чтения.
Если отключено, локальной реплике не отдается предпочтение, и реплики выбираются исключительно алгоритмом балансировки нагрузки.
Это позволяет направлять запросы с `max_parallel_replicas = 1` на другой хост, что может улучшить локальность кэша, когда множество коротких запросов распределено по кластеру.

<div id="parallel_replicas_support_projection">
  ## parallel\_replicas\_support\_projection
</div>

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

Оптимизация проекций может использоваться в параллельных репликах. Действует только при включенном parallel\_replicas\_local\_plan и отключенном aggregation\_in\_order.
