Перейти к основному содержанию

Обзор

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

Настройки overflow_mode

Большинство ограничений также имеют параметр overflow_mode, который определяет, что происходит при превышении лимита, и может принимать одно из двух значений:
  • throw: сгенерировать исключение (по умолчанию).
  • break: остановить выполнение запроса и вернуть частичный результат, как если бы исходные данные были исчерпаны.

Настройки group_by_overflow_mode

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

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

Следующие настройки используются для задания ограничений на сложность запросов.
Ограничения на «максимальное количество чего-либо» могут иметь значение 0, что означает отсутствие ограничений.
ПараметрКраткое описание
max_memory_usageМаксимальный объем оперативной памяти, используемый для выполнения запроса на одном сервере.
max_memory_usage_for_userМаксимальный объем оперативной памяти, используемый для выполнения запросов пользователя на одном сервере.
max_rows_to_readМаксимальное количество строк, которое можно прочитать из таблицы при выполнении запроса.
max_bytes_to_readМаксимальное количество байтов (несжатых данных), которое можно прочитать из таблицы при выполнении запроса.
read_overflow_mode_leafОпределяет, что происходит, когда объем прочитанных данных превышает один из лимитов листового узла.
max_rows_to_read_leafМаксимальное количество строк, которое можно прочитать из локальной таблицы на листовом узле при выполнении распределенного запроса.
max_bytes_to_read_leafМаксимальное количество байтов (несжатых данных), которое можно прочитать из локальной таблицы на листовом узле при выполнении распределенного запроса.
read_overflow_mode_leafОпределяет, что происходит, когда объем прочитанных данных превышает один из лимитов листового узла.
max_rows_to_group_byМаксимальное количество уникальных ключей, полученных при агрегации.
group_by_overflow_modeОпределяет, что происходит, когда количество уникальных ключей для агрегации превышает лимит.
max_bytes_before_external_group_byВключает или отключает выполнение секций GROUP BY во внешней памяти.
max_bytes_ratio_before_external_group_byДоля доступной памяти, которую разрешено использовать для GROUP BY. После достижения этого значения для агрегации используется внешняя память.
max_bytes_before_external_sortВключает или отключает выполнение секций ORDER BY во внешней памяти.
max_bytes_ratio_before_external_sortДоля доступной памяти, которую разрешено использовать для ORDER BY. После достижения этого значения используется внешняя сортировка.
max_rows_to_sortМаксимальное количество строк до сортировки. Позволяет ограничить потребление памяти при сортировке.
max_bytes_to_sortМаксимальное количество байтов до сортировки.
sort_overflow_modeОпределяет, что происходит, если количество строк, полученных до сортировки, превышает один из лимитов.
max_result_rowsОграничивает количество строк в результате.
max_result_bytesОграничивает размер результата в байтах (в несжатом виде).
result_overflow_modeОпределяет, что делать, если объем результата превышает один из лимитов.
max_execution_timeМаксимальное время выполнения запроса в секундах.
timeout_overflow_modeОпределяет, что делать, если запрос выполняется дольше max_execution_time или расчетное время выполнения превышает max_estimated_execution_time.
max_execution_time_leafПо смыслу аналогичен max_execution_time, но применяется только на листовых узлах для распределенных или удаленных запросов.
timeout_overflow_mode_leafОпределяет, что происходит, когда запрос на листовом узле выполняется дольше max_execution_time_leaf.
min_execution_speedМинимальная скорость выполнения в строках в секунду.
min_execution_speed_bytesМинимальное количество обрабатываемых байтов в секунду.
max_execution_speedМаксимальное количество обрабатываемых строк в секунду.
max_execution_speed_bytesМаксимальное количество обрабатываемых байтов в секунду.
timeout_before_checking_execution_speedПроверяет, не слишком ли низка скорость выполнения (не меньше min_execution_speed), после истечения указанного времени в секундах.
max_estimated_execution_timeМаксимальная расчетная продолжительность выполнения запроса в секундах.
max_columns_to_readМаксимальное количество столбцов, которое можно прочитать из таблицы за один запрос.
max_temporary_columnsМаксимальное количество временных столбцов, которые должны одновременно находиться в оперативной памяти при выполнении запроса, включая константные столбцы.
max_temporary_non_const_columnsМаксимальное количество временных столбцов, которые должны одновременно находиться в оперативной памяти при выполнении запроса, без учёта константных столбцов.
max_subquery_depthОпределяет, что произойдёт, если в запросе число вложенных подзапросов превысит указанное значение.
max_ast_depthМаксимальная глубина вложенности синтаксического дерева запроса.
max_ast_elementsМаксимальное количество элементов в синтаксическом дереве запроса.
max_rows_in_setМаксимальное количество строк в наборе данных для выражения IN, созданного из подзапроса.
max_bytes_in_setМаксимальное количество байтов (несжатых данных), используемое набором в выражении IN, созданном из подзапроса.
set_overflow_modeОпределяет, что произойдёт, если объём данных превысит один из лимитов.
max_rows_in_distinctМаксимальное количество различных строк при использовании DISTINCT.
max_bytes_in_distinctМаксимальный объём состояния в памяти в байтах (несжатых), используемого хеш-таблицей при применении DISTINCT.
distinct_overflow_modeОпределяет, что произойдёт, если объём данных превысит один из лимитов.
max_rows_to_transferМаксимальный размер (в строках), который можно передать на удалённый сервер или сохранить во временной таблице при выполнении GLOBAL IN/JOIN.
max_bytes_to_transferМаксимальное количество байтов (несжатых данных), которое можно передать на удалённый сервер или сохранить во временной таблице при выполнении GLOBAL IN/JOIN.
transfer_overflow_modeОпределяет, что произойдёт, если объём данных превысит один из лимитов.
max_rows_in_joinОграничивает количество строк в хеш-таблице, используемой при JOIN таблиц.
max_bytes_in_joinМаксимальный размер хеш-таблицы, используемой при JOIN таблиц, в байтах.
join_overflow_modeОпределяет, какое действие ClickHouse выполняет при достижении любого из следующих ограничений JOIN.
max_partitions_per_insert_blockОграничивает максимальное количество партиций в одном вставляемом блоке; если блок содержит слишком много партиций, генерируется исключение.
throw_on_max_partitions_per_insert_blockПозволяет управлять поведением при достижении max_partitions_per_insert_block.
max_temporary_data_on_disk_size_for_userМаксимальный объём данных в байтах, занимаемый временными файлами на диске для всех одновременно выполняемых запросов пользователя.
max_temporary_data_on_disk_size_for_queryМаксимальный объём данных в байтах, занимаемый временными файлами на диске для всех одновременно выполняемых запросов.
max_sessions_for_userМаксимальное количество одновременных сеансов для одного аутентифицированного пользователя на сервере ClickHouse.
max_partitions_to_readОграничивает максимальное количество партиций, к которым можно обратиться в одном запросе.

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

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

max_pipeline_depth

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