> ## 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.

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

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

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}>
                <Icon />
                <span>Бета</span>
            </a>;
  }
  return <div className="betaBadge">
            <Icon />
            <span>
                Возможность в статусе бета. 
                <u>
                    <a href="/docs/docs/beta-and-experimental-features#beta-features">
                        Подробнее.
                    </a>
                </u>
            </span>
        </div>;
};

export const ExperimentalBadge = () => {
  return <div 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>
            Экспериментальная возможность. <u><a href="/docs/docs/beta-and-experimental-features#experimental-features">Подробнее.</a></u>
        </div>;
};

Эти настройки доступны в [system.settings](/docs/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" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "1"},{"label": "Если значение true, подзапрос для IN будет выполняться на каждой реплике-follower"}]}]} />

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

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "Разрешить использование материализованных представлений с параллельными репликами"}]}]} />

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

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

<BetaBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "новая настройка"}]}]} />

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

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "300"},{"label": "Отдельный тайм-аут подключения для запросов с параллельными репликами"}]}]} />

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

<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" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "0"},{"label": "Добавлены настройки для управления фильтром диапазона при использовании параллельных реплик с динамическими сегментами"}]}]} />

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

При использовании вместе с [parallel\_replicas\_custom\_key\_range\_upper](/docs/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" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "0"},{"label": "Добавлены настройки для управления фильтром диапазона при использовании параллельных реплик с динамическими сегментами. Значение 0 отключает верхнюю границу"}]}]} />

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

При использовании вместе с [parallel\_replicas\_custom\_key\_range\_lower](/docs/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" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "0"},{"label": "новая настройка"}]}]} />

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

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.3"},{"label": "1"},{"label": "Новая настройка"}]}]} />

Заменяет движки табличных функций на соответствующие варианты -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" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "1"},{"label": "Анализ индекса выполняется только на реплике-координаторе и не выполняется на других репликах. Действует только при включенном parallel_replicas_local_plan"}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "1"},{"label": "Анализ индекса выполняется только на реплике-координаторе и не выполняется на других репликах. Действует только при включенном parallel_replicas_local_plan"}]}]} />

Анализ индекса выполняется только на реплике-координаторе и не выполняется на других репликах. Действует только при включенном 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" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "1"},{"label": "Использовать локальный конвейер при распределённом INSERT SELECT с параллельными репликами. В настоящее время отключено из-за проблем с производительностью"}]}, {"id": "row-2","items": [{"label": "25.4"},{"label": "0"},{"label": "Использовать локальный конвейер при распределённом INSERT SELECT с параллельными репликами. В настоящее время отключено из-за проблем с производительностью"}]}]} />

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

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "0"},{"label": "Использовать локальный план для локальной реплики в запросе с параллельными репликами"}]}, {"id": "row-2","items": [{"label": "24.11"},{"label": "1"},{"label": "Использовать локальный план для локальной реплики в запросе с параллельными репликами"}]}, {"id": "row-3","items": [{"label": "24.10"},{"label": "1"},{"label": "Использовать локальный план для локальной реплики в запросе с параллельными репликами"}]}]} />

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

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "0"},{"label": "Значение этого параметра теперь определяется автоматически"}]}, {"id": "row-2","items": [{"label": "24.1"},{"label": "128"},{"label": "Добавлена новая настройка для управления размером сегмента в новой реализации координатора параллельных реплик"}]}]} />

Части логически разбиваются на сегменты, которые распределяются между репликами для параллельного чтения. Этот параметр задаёт размер этих сегментов. Не рекомендуется изменять его, пока вы не будете полностью уверены в том, что делаете. Значение должно находиться в диапазоне \[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" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "read_tasks"},{"label": "Этот параметр был добавлен при переводе возможности параллельных реплик в статус бета"}]}]} />

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

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.2"},{"label": "1"},{"label": "Параллельные реплики поддерживаются только при включенном анализаторе"}]}]} />

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

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

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.7"},{"label": "0"},{"label": "новая настройка"}]}]} />

Представляет локальную/удалённую границу параллельных реплик в виде преобразования плана. Планировщик строит обычный локальный план; затем над шагом чтения вставляется шаг 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" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "1"},{"label": "Если `true`, и JOIN можно выполнить с помощью алгоритма параллельных реплик, а все хранилища правой части JOIN — таблицы семейства *MergeTree, будет использоваться локальный JOIN вместо GLOBAL JOIN."}]}]} />

Если `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" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "Новая настройка. Если отключена, реплики для параллельного чтения выбираются исключительно алгоритмом балансировки нагрузки, без принудительного включения локальной реплики в набор."}]}]} />

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

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

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "1"},{"label": "Новая настройка. Оптимизация проекций может использоваться в параллельных репликах. Действует только при включенном parallel_replicas_local_plan и отключенном aggregation_in_order."}]}]} />

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