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

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

> Настройки сеанса ClickHouse из сгенерированной группы max_bytes_*.

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="max_bytes_before_external_group_by">
  ## max\_bytes\_before\_external\_group\_by
</div>

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

Значение по умолчанию в Cloud: половина объема памяти для каждой реплики.

Включает или отключает выполнение секций `GROUP BY` с использованием внешней памяти.
(См. [GROUP BY во внешней памяти](/docs/ru/reference/statements/select/group-by#group-by-in-external-memory))

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

* Максимальный объем оперативной памяти (в байтах), который может использовать одна операция [GROUP BY](/docs/ru/reference/statements/select/group-by).
* `0` — `GROUP BY` с использованием внешней памяти отключен.

<Note>
  Если использование памяти во время операций GROUP BY превышает этот порог в байтах,
  активируется режим «внешней агрегации» (сброс данных на диск).

  Рекомендуемое значение — половина доступной системной памяти.
</Note>

<div id="max_bytes_before_external_join">
  ## max\_bytes\_before\_external\_join
</div>

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

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

Если задано ненулевое значение и `join_algorithm` имеет значение `hash`, `parallel_hash`, `default` или `auto`, hash JOIN будет автоматически преобразован в grace hash JOIN, что позволит сбрасывать данные на диск, когда объём данных с правой стороны превысит этот порог в байтах. При значении `0` (по умолчанию) этот абсолютный порог в байтах отключён, однако автоматический сброс на диск всё равно может происходить через `max_bytes_ratio_before_external_join` (по умолчанию — `0.5`); установите оба значения в `0`, чтобы полностью отключить автоматический сброс на диск. Это предотвращает оптимизацию чтения по порядку через JOIN.

<div id="max_bytes_before_external_sort">
  ## max\_bytes\_before\_external\_sort
</div>

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

Значение по умолчанию в Cloud: половина объёма памяти для каждой реплики.

Включает или отключает выполнение секций `ORDER BY` во внешней памяти. См. [Подробности реализации ORDER BY](/docs/ru/reference/statements/select/order-by#implementation-details)
Если использование памяти во время операции ORDER BY превышает этот порог в байтах, активируется режим «внешней сортировки» (сброс данных на диск).

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

* Максимальный объём оперативной памяти (в байтах), который может использовать одна операция [ORDER BY](/docs/ru/reference/statements/select/order-by).
  Рекомендуемое значение — половина доступной системной памяти
* `0` — `ORDER BY` во внешней памяти отключён.

<div id="max_bytes_before_remerge_sort">
  ## max\_bytes\_before\_remerge\_sort
</div>

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

При использовании ORDER BY с LIMIT, если использование памяти превышает указанный порог, перед окончательным слиянием выполняются дополнительные шаги по слиянию блоков, чтобы оставить только первые LIMIT строк.

<div id="max_bytes_for_lazy_final">
  ## max\_bytes\_for\_lazy\_final
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "256000000"},{"label": "Новая настройка для максимального количества байт в наборе для оптимизации отложенного FINAL"}]}]} />

Максимальное количество байт в наборе для оптимизации отложенного FINAL. При превышении этого значения используется обычный FINAL.

<div id="max_bytes_in_distinct">
  ## max\_bytes\_in\_distinct
</div>

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

Максимальный размер состояния в памяти (в несжатых байтах),
используемого хеш-таблицей при выполнении DISTINCT.

<div id="max_bytes_in_join">
  ## max\_bytes\_in\_join
</div>

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

Максимальный размер в байтах структуры данных правой части (обычно хеш-таблицы), используемой при JOIN таблиц.

Этот параметр применяется к операциям [SELECT ... JOIN](/docs/ru/reference/statements/select/join) и [движку таблицы Join](/docs/ru/reference/engines/table-engines/special/join).

Если запрос содержит несколько JOIN, ClickHouse проверяет этот параметр для каждого промежуточного результата. При достижении лимита дальнейшее поведение зависит от выбранного [`join_algorithm`](/docs/ru/reference/settings/session-settings/join#join_algorithm) — описание поведения для каждого алгоритма см. в этом параметре (spill, повторное разбиение на партиции, переключение или throw/break в соответствии с [`join_overflow_mode`](/docs/ru/reference/settings/session-settings/join#join_overflow_mode)).

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

* Положительное целое число.
* 0 — контроль памяти отключен.

<div id="max_bytes_in_set">
  ## max\_bytes\_in\_set
</div>

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

Максимальное количество байтов (несжатых данных), используемых множеством в выражении IN, созданным из подзапроса.

<div id="max_bytes_ratio_before_external_group_by">
  ## max\_bytes\_ratio\_before\_external\_group\_by
</div>

<SettingsInfoBlock type="Double" default_value="0.5" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "0.5"},{"label": "включён автоматический сброс на диск по умолчанию"}]}, {"id": "row-2","items": [{"label": "24.12"},{"label": "0"},{"label": "Новая настройка"}]}]} />

Доля доступной памяти, которую разрешено использовать для `GROUP BY`. После
достижения этого значения для агрегации начинает использоваться внешняя память.

Например, если установлено значение `0.6`, `GROUP BY` сможет использовать 60% доступной памяти
(server/user/merges) на начальном этапе выполнения, после чего
начнёт использовать внешнюю агрегацию.

<div id="max_bytes_ratio_before_external_join">
  ## max\_bytes\_ratio\_before\_external\_join
</div>

<SettingsInfoBlock type="Double" default_value="0.5" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "0.5"},{"label": "Новая настройка: доля доступной памяти, используемая как порог сброса на диск для hash JOIN. По умолчанию включена со значением `0.5`, по аналогии с `max_bytes_ratio_before_external_group_by` и `max_bytes_ratio_before_external_sort`. Используется вместе с абсолютным значением `max_bytes_before_external_join` (применяется меньшее из двух)."}]}]} />

Доля доступной памяти, которую разрешено использовать для `JOIN`. При достижении этого значения hash join будет преобразован в grace hash join, чтобы сбрасывать данные из правой части на диск.

Например, если задано значение `0.6`, `JOIN` позволит использовать `60%` доступной памяти (для server/user/merges) для хеш-таблицы правой части в начале выполнения; после этого начнется сброс на диск.

Если заданы и `max_bytes_before_external_join`, и `max_bytes_ratio_before_external_join`, используется меньший из получившихся порогов. Если значение доли равно `0`, применяется только абсолютная настройка.

Действует только если `join_algorithm` имеет значение `hash`, `parallel_hash`, `default` или `auto` и настроен путь для временных данных.

<div id="max_bytes_ratio_before_external_sort">
  ## max\_bytes\_ratio\_before\_external\_sort
</div>

<SettingsInfoBlock type="Double" default_value="0.5" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "0.5"},{"label": "Включён автоматический сброс на диск по умолчанию."}]}, {"id": "row-2","items": [{"label": "24.12"},{"label": "0"},{"label": "Новая настройка."}]}]} />

Доля доступной памяти, которую разрешено использовать для `ORDER BY`. После достижения этого порога используется внешняя сортировка.

Например, если установить значение `0.6`, `ORDER BY` сможет использовать `60%` доступной памяти (для server/user/merges) в начале выполнения, после чего начнёт использовать внешнюю сортировку.

Обратите внимание, что ограничение `max_bytes_before_external_sort` по-прежнему действует: выгрузка на диск выполняется только в том случае, если блок сортировки превышает `max_bytes_before_external_sort`.

<div id="max_bytes_to_read">
  ## max\_bytes\_to\_read
</div>

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

Максимальное количество байтов (несжатых данных), которое можно прочитать из таблицы при выполнении запроса.
Ограничение проверяется для каждого обработанного фрагмента данных, применяется только к
наиболее глубокому табличному выражению, а при чтении с удалённого сервера проверяется только на
удалённом сервере.

<div id="max_bytes_to_read_leaf">
  ## max\_bytes\_to\_read\_leaf
</div>

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

Максимальное число байтов (несжатых данных), которое можно прочитать из локальной
таблицы на листовом узле при выполнении распределённого запроса. Хотя распределённые запросы
могут отправлять несколько подзапросов на каждый сегмент (листовой узел), этот лимит
проверяется только на стадии чтения на листовых узлах и игнорируется на
стадии слияния результатов на корневом узле.

Например, кластер состоит из 2 сегментов, и каждый сегмент содержит таблицу со
100 байтами данных. Распределённый запрос, который должен прочитать все данные
из обеих таблиц с настройкой `max_bytes_to_read=150`, завершится ошибкой, поскольку
в сумме получится 200 байт. Запрос с `max_bytes_to_read_leaf=150` выполнится успешно, так как
листовые узлы прочитают максимум 100 байт.

Ограничение проверяется для каждого обработанного фрагмента данных.

<Note>
  Этот параметр нестабилен при `prefer_localhost_replica=1`.
</Note>

<div id="max_bytes_to_sort">
  ## max\_bytes\_to\_sort
</div>

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

Максимальное количество байт, обрабатываемых перед сортировкой. Если для операции ORDER BY требуется обработать больше указанного объёма несжатых данных, поведение определяется параметром `sort_overflow_mode`, который по умолчанию имеет значение `throw`.

<div id="max_bytes_to_transfer">
  ## max\_bytes\_to\_transfer
</div>

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

Максимальное количество байтов (несжатых данных), которое может быть передано на удалённый
сервер или сохранено во временной таблице при выполнении выражения GLOBAL IN/JOIN.
