Skip to main content
Эти настройки доступны в system.settings и автоматически генерируются на основе исходного кода.

max_bytes_before_external_distinct

Порог использования памяти запросом в байтах, при достижении которого данные DISTINCT сбрасываются на диск. Фактическое использование памяти может превышать этот порог. 0 отключает этот порог. Если max_bytes_ratio_before_external_distinct также задаёт порог, используется меньшее из значений. Установите для обеих настроек значение 0, чтобы отключить сброс данных на диск. См. DISTINCT во внешней памяти.

max_bytes_before_external_group_by

Значение по умолчанию в Cloud: половина объема памяти для каждой реплики. Включает или отключает выполнение секций GROUP BY с использованием внешней памяти. (См. GROUP BY во внешней памяти) Возможные значения:
  • Максимальный объем оперативной памяти (в байтах), который может использовать одна операция GROUP BY.
  • 0 — GROUP BY с использованием внешней памяти отключен.
Если использование памяти во время операций GROUP BY превышает этот порог в байтах, активируется режим «внешней агрегации» (сброс данных на диск).Рекомендуемое значение — половина доступной системной памяти.

max_bytes_before_external_join

Если задано ненулевое значение, hash JOIN будет автоматически преобразован в grace hash JOIN, что позволит сбрасывать данные на диск, когда объём данных правой части превысит этот порог в байтах. Вместе с max_bytes_ratio_before_external_join это пороговый триггер сброса данных на диск для любого основанного на хешировании join_algorithm, включая grace_hash, который требует, чтобы одна из этих двух настроек была ненулевой. Как только ненулевой порог делает JOIN способным к сбросу данных на диск, enable_adaptive_memory_spill_scheduler может принудительно вызвать сброс данных на диск при нехватке памяти ещё до достижения порога; если обе настройки равны 0, JOIN никогда не сбрасывает данные на диск, поэтому планировщику нечего запускать. Исключение — legacy_join_size_limits_trigger_spilling: при включённой настройке автономный grace_hash игнорирует обе и сбрасывает данные на диск по max_rows_in_join / max_bytes_in_join. При значении 0 (по умолчанию) этот абсолютный порог в байтах отключён, однако автоматический сброс данных на диск всё равно может происходить через max_bytes_ratio_before_external_join (по умолчанию — 0.5); установите оба значения в 0, чтобы полностью отключить автоматический сброс данных на диск. Это предотвращает оптимизацию чтения по порядку через JOIN.

max_bytes_before_external_sort

Значение по умолчанию в Cloud: половина объёма памяти для каждой реплики. Включает или отключает выполнение секций ORDER BY во внешней памяти. См. Подробности реализации ORDER BY Если использование памяти во время операции ORDER BY превышает этот порог в байтах, активируется режим «внешней сортировки» (сброс данных на диск). Возможные значения:
  • Максимальный объём оперативной памяти (в байтах), который может использовать одна операция ORDER BY. Рекомендуемое значение — половина доступной системной памяти
  • 0 — ORDER BY во внешней памяти отключён.

max_bytes_before_remerge_sort

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

max_bytes_for_lazy_final

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

max_bytes_in_distinct

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

max_bytes_in_join

Максимальный размер в байтах структуры данных правой части (обычно хеш-таблицы), используемой при JOIN таблиц. Этот параметр применяется к операциям SELECT … JOIN и движку таблицы Join. Если запрос содержит несколько JOIN, ClickHouse проверяет этот параметр для каждого промежуточного результата. Это жесткое ограничение для любого join_algorithm на основе хеширования: при достижении лимита запрос генерирует исключение или прерывается в соответствии с join_overflow_mode. Оно никогда не приводит к сбросу данных JOIN на диск — за это отвечают max_bytes_before_external_join и max_bytes_ratio_before_external_join. Поскольку это ограничение, а не триггер, установка его значения на уровне порога сброса данных на диск или ниже обычно приводит к сбою запроса еще до того, как JOIN сможет выполнить сброс данных на диск, — если только JOIN не поддерживает сброс данных на диск и enable_adaptive_memory_spill_scheduler не вызовет сброс данных на диск раньше, либо legacy_join_size_limits_trigger_spilling не превратит этот лимит обратно в триггер сброса данных на диск для той части JOIN, которая уже выполняется на диске. Лимит учитывает содержимое хеш-таблиц, поэтому JOIN со сбросом данных на диск достигает его по мере загрузки каждого бакета, а не во время чтения правой части: он может прочитать больше данных правой части до остановки, чем хеш-JOIN, выполняемый в памяти. Возможные значения:
  • Положительное целое число.
  • 0 — контроль памяти отключен.

max_bytes_in_set

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

max_bytes_ratio_before_external_distinct

Доля доступной памяти сервера или пользователя, используемая для расчёта порога внешнего DISTINCT в начале выполнения. Например, при значении 0.5 используется половина доступной памяти. Значение должно быть не меньше 0 и меньше 1. Значение 0 отключает этот порог. При отсутствии применимого ограничения памяти сервера или пользователя эта доля не действует. max_memory_usage не влияет на этот расчёт. Чтобы настроить сброс данных на диск относительно этого ограничения, используйте max_bytes_before_external_distinct, оставив запас для дополнительного использования памяти.

max_bytes_ratio_before_external_group_by

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

max_bytes_ratio_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, основанного на хешировании, включая grace_hash, при условии, что настроен путь для временных данных.

max_bytes_ratio_before_external_sort

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

max_bytes_to_read

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

max_bytes_to_read_leaf

Максимальное число байтов (несжатых данных), которое можно прочитать из локальной таблицы на листовом узле при выполнении распределённого запроса. Хотя распределённые запросы могут отправлять несколько подзапросов на каждый сегмент (листовой узел), этот лимит проверяется только на стадии чтения на листовых узлах и игнорируется на стадии слияния результатов на корневом узле. Например, кластер состоит из 2 сегментов, и каждый сегмент содержит таблицу со 100 байтами данных. Распределённый запрос, который должен прочитать все данные из обеих таблиц с настройкой max_bytes_to_read=150, завершится ошибкой, поскольку в сумме получится 200 байт. Запрос с max_bytes_to_read_leaf=150 выполнится успешно, так как листовые узлы прочитают максимум 100 байт. Ограничение проверяется для каждого обработанного фрагмента данных.
Этот параметр нестабилен при prefer_localhost_replica=1.

max_bytes_to_sort

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

max_bytes_to_transfer

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