Эти настройки доступны в system.settings и автоматически генерируются на основе исходного кода.
max_execution_speed
Максимальное количество строк, обрабатываемых в секунду. Проверяется на каждом блоке данных по истечении
timeout_before_checking_execution_speed.
Если скорость выполнения слишком высока, она будет снижена.
max_execution_speed_bytes
Максимальное количество байт, обрабатываемых в секунду. Проверяется на каждом блоке данных после истечения
timeout_before_checking_execution_speed.
Если скорость выполнения слишком высока, она будет снижена.
max_execution_time
Максимальное время выполнения запроса в секундах.
Параметр 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
По смыслу аналогично 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;