Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

настройки сеанса max_execution_*

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

max_execution_speed

Тип
UInt64
По умолчанию
0

Максимальное количество строк, обрабатываемых в секунду. Проверяется на каждом блоке данных по истечении timeout_before_checking_execution_speed. Если скорость выполнения слишком высока, она будет снижена.

max_execution_speed_bytes

Тип
UInt64
По умолчанию
0

Максимальное количество байт, обрабатываемых в секунду. Проверяется на каждом блоке данных после истечения timeout_before_checking_execution_speed. Если скорость выполнения слишком высока, она будет снижена.

max_execution_time

Тип
Секунды
По умолчанию
0

Максимальное время выполнения запроса в секундах.

Параметр max_execution_time бывает не так просто понять. Он работает на основе интерполяции относительно текущей скорости выполнения запроса (это поведение задаётся параметром timeout_before_checking_execution_speed).

ClickHouse прервёт запрос, если прогнозируемое время выполнения превысит указанное значение max_execution_time. По умолчанию параметр timeout_before_checking_execution_speed равен 10 секундам. Это означает, что после 10 секунд выполнения запроса ClickHouse начнёт оценивать общее время выполнения. Если, например, для max_execution_time задано 3600 секунд (1 час), ClickHouse завершит запрос, если расчётное время превысит этот лимит в 3600 секунд. Если установить timeout_before_checking_execution_speed в 0, ClickHouse будет использовать фактическое время по часам как основу для max_execution_time.

Если время выполнения запроса превысит указанное число секунд, поведение будет определяться параметром timeout_overflow_mode, который по умолчанию установлен в throw.

max_execution_time_leaf

Тип
Секунды
По умолчанию
0

По смыслу аналогично max_execution_time, но применяется только на листовых узлах для распределённых или удалённых запросов.

Например, если мы хотим ограничить время выполнения на листовом узле значением 10s, но не задавать ограничение на исходном узле, то вместо использования max_execution_time в настройках вложенного подзапроса:

SELECT count()
FROM cluster(cluster, view(SELECT * FROM t SETTINGS max_execution_time = 10));

Можно использовать max_execution_time_leaf в настройках запроса:

SELECT count()
FROM cluster(cluster, view(SELECT * FROM t)) SETTINGS max_execution_time_leaf = 10;
Navigation