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

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

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

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/ru/reference/system-tables/settings) и автоматически генерируются на основе [исходного кода](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp).

<div id="distributed_aggregation_memory_efficient">
  ## distributed\_aggregation\_memory\_efficient
</div>

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

Включен ли режим экономии памяти для распределенной агрегации.

<div id="distributed_connections_pool_size">
  ## distributed\_connections\_pool\_size
</div>

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

Максимальное количество одновременных соединений с удалёнными серверами для распределённой обработки всех запросов к одной distributed таблице. Рекомендуется задавать значение не меньше числа серверов в кластере.

<div id="distributed_foreground_insert">
  ## distributed\_foreground\_insert
</div>

**Псевдонимы**: `insert_distributed_sync`

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

Включает или отключает синхронную вставку данных в [distributed таблицу](/docs/ru/reference/engines/table-engines/special/distributed).

По умолчанию при вставке данных в `distributed` таблицу сервер ClickHouse отправляет данные на узлы кластера в фоновом режиме. Если `distributed_foreground_insert=1`, данные обрабатываются синхронно, и операция `INSERT` завершается успешно только после того, как все данные будут сохранены на всех сегментах (как минимум на одной реплике для каждого сегмента, если `internal_replication` имеет значение true).

Возможные значения:

* `0` — Данные вставляются в фоновом режиме.
* `1` — Данные вставляются в синхронном режиме.

Значение по умолчанию в Cloud: `1`.

**См. также**

* [Движок таблицы Distributed](/docs/ru/reference/engines/table-engines/special/distributed)
* [Управление distributed таблицами](/docs/ru/reference/statements/system#managing-distributed-tables)

<div id="distributed_group_by_no_merge">
  ## distributed\_group\_by\_no\_merge
</div>

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

Не объединять состояния агрегации с разных серверов при распределённой обработке запросов; можно использовать, если точно известно, что на разных сегментах находятся разные ключи.

Возможные значения:

* `0` — Отключено (окончательная обработка запроса выполняется на узле-инициаторе).
* `1` - Не объединять состояния агрегации с разных серверов при распределённой обработке запросов (запрос полностью обрабатывается на сегменте, инициатор только проксирует данные); можно использовать, если точно известно, что на разных сегментах находятся разные ключи.
* `2` - То же, что и `1`, но `ORDER BY` и `LIMIT` применяются на инициаторе (это невозможно, когда запрос полностью обрабатывается на удалённом узле, как при `distributed_group_by_no_merge=1`); можно использовать для запросов с `ORDER BY` и/или `LIMIT`.

**Пример**

```sql theme={null}
SELECT *
FROM remote('127.0.0.{2,3}', system.one)
GROUP BY dummy
LIMIT 1
SETTINGS distributed_group_by_no_merge = 1
FORMAT PrettyCompactMonoBlock

┌─dummy─┐
│     0 │
│     0 │
└───────┘
```

```sql theme={null}
SELECT *
FROM remote('127.0.0.{2,3}', system.one)
GROUP BY dummy
LIMIT 1
SETTINGS distributed_group_by_no_merge = 2
FORMAT PrettyCompactMonoBlock

┌─dummy─┐
│     0 │
└───────┘
```

<div id="distributed_insert_skip_read_only_replicas">
  ## distributed\_insert\_skip\_read\_only\_replicas
</div>

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

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

Включает пропуск реплик только для чтения для запросов INSERT в Distributed.

Возможные значения:

* 0 — INSERT выполняется как обычно; если запрос попадёт на реплику только для чтения, произойдёт ошибка
* 1 — Инициатор будет пропускать реплики только для чтения перед отправкой данных в сегменты.

<div id="distributed_product_mode">
  ## distributed\_product\_mode
</div>

<SettingsInfoBlock type="DistributedProductMode" default_value="deny" />

Изменяет поведение [распределённых подзапросов](/docs/ru/reference/statements/in).

ClickHouse применяет эту настройку, когда запрос содержит произведение distributed таблиц, то есть когда запрос к distributed таблице содержит подзапрос без `GLOBAL` для distributed таблицы.

Ограничения:

* Применяется только к подзапросам `IN` и `JOIN`.
* Только если в секции `FROM` используется distributed таблица, содержащая более одного сегмента.
* Только если подзапрос относится к distributed таблице, содержащей более одного сегмента.
* Не используется для табличной функции [remote](/docs/ru/reference/functions/table-functions/remote).

Возможные значения:

* `deny` — Значение по умолчанию. Запрещает использовать такие типы подзапросов (возвращает исключение "Double-distributed in/JOIN subqueries is denied").
* `local` — Заменяет базу данных и таблицу в подзапросе на локальные для сервера пункта назначения (сегмента), оставляя обычные `IN`/`JOIN`.
* `global` — Заменяет запрос `IN`/`JOIN` на `GLOBAL IN`/`GLOBAL JOIN`.
* `allow` — Разрешает использование таких типов подзапросов.

<div id="distributed_push_down_limit">
  ## distributed\_push\_down\_limit
</div>

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

Включает или отключает применение [LIMIT](/docs/ru/reference/settings/session-settings/other#limit) отдельно к каждому сегменту.

Это позволяет избежать:

* Передачи лишних строк по сети;
* Обработки строк сверх лимита на узле-инициаторе.

Начиная с версии 21.9 этот параметр больше не может приводить к неточным результатам, поскольку `distributed_push_down_limit` изменяет выполнение запроса, только если выполняется хотя бы одно из следующих условий:

* [distributed\_group\_by\_no\_merge](/docs/ru/reference/settings/session-settings/distributed#distributed_group_by_no_merge) > 0.
* Запрос **не содержит** `GROUP BY`/`DISTINCT`/`LIMIT BY`, но содержит `ORDER BY`/`LIMIT`.
* Запрос **содержит** `GROUP BY`/`DISTINCT`/`LIMIT BY` вместе с `ORDER BY`/`LIMIT`, и:
  * [optimize\_skip\_unused\_shards](/docs/ru/reference/settings/session-settings/optimize-skip#optimize_skip_unused_shards) включен.
  * [optimize\_distributed\_group\_by\_sharding\_key](/docs/ru/reference/settings/session-settings/optimize#optimize_distributed_group_by_sharding_key) включен.

Возможные значения:

* 0 — Отключено.
* 1 — Включено.

См. также:

* [distributed\_group\_by\_no\_merge](/docs/ru/reference/settings/session-settings/distributed#distributed_group_by_no_merge)
* [optimize\_skip\_unused\_shards](/docs/ru/reference/settings/session-settings/optimize-skip#optimize_skip_unused_shards)
* [optimize\_distributed\_group\_by\_sharding\_key](/docs/ru/reference/settings/session-settings/optimize#optimize_distributed_group_by_sharding_key)
