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 в
настройках вложенного подзапроса:
max_execution_time_leaf в настройках запроса: