Skip to main content

Обзор

В разделе настроек ClickHouse предусмотрена возможность устанавливать ограничения на сложность запросов. Это помогает защититься от потенциально ресурсоёмких запросов, обеспечивая более безопасное и предсказуемое выполнение, особенно при использовании пользовательского интерфейса. Почти все ограничения применяются только к запросам SELECT, а при распределённой обработке запросов они применяются отдельно на каждом сервере. Как правило, ClickHouse проверяет ограничения только после полной обработки частей данных, а не для каждой строки. Это может привести к ситуации, когда ограничения нарушаются в процессе обработки части.

Настройки overflow_mode

Большинство ограничений также имеют параметр overflow_mode, который определяет, что происходит при превышении лимита, и может принимать одно из двух значений:
  • throw: сгенерировать исключение (по умолчанию).
  • break: остановить выполнение запроса и вернуть частичный результат, как если бы исходные данные были исчерпаны.
Когда запрос останавливается параметром max_execution_time со значением break, некоторые операции не могут безопасно вернуть частичный результат, поэтому вместо сокращённого результата они завершаются, не возвращая его. Функция, вычисляющая одно значение, завершается, не возвращая это значение; будет ли остановка также передана клиенту как ошибка TIMEOUT_EXCEEDED или проявится лишь отсутствием результата, зависит от того, где был прерван запрос. Незавершённая из-за тайм-аута мутация таблицы Memory оставляет таблицу без изменений и сообщает TIMEOUT_EXCEEDED. Операция INSERT может сообщить QUERY_WAS_CANCELLED. Некоторые операции, ожидающие других реплик или завершения фоновой работы, вообще не останавливаются по max_execution_time: запись с кворумом продолжает ожидание до достижения кворума либо сообщает UNKNOWN_STATUS_OF_INSERT, если раньше истекает insert_quorum_timeout.

Настройки group_by_overflow_mode

У настройки group_by_overflow_mode также есть значение any:
  • any : продолжать агрегацию для ключей, уже попавших в набор, но не добавлять в него новые ключи.

Список настроек

Следующие настройки используются для задания ограничений на сложность запросов.
Ограничения на «максимальное количество чего-либо» могут иметь значение 0, что означает отсутствие ограничений.

Устаревшие настройки

Следующие настройки устарели.

max_pipeline_depth

Максимальная глубина конвейера. Соответствует числу преобразований, через которые проходит каждый блок данных при обработке запроса. Подсчитывается в пределах одного сервера. Если глубина конвейера превышает это значение, генерируется исключение.
Последнее изменение 14 августа 2026 г.