Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

max_execution_* 세션 설정

이러한 설정은 system.settings에서 확인할 수 있으며, source로부터 자동 생성됩니다.

max_execution_speed

유형
UInt64
기본값
0

초당 최대 실행 행 수입니다. timeout_before_checking_execution_speed 시간이 만료될 때마다 각 데이터 블록에서 이를 확인합니다. 실행 속도가 너무 높으면 속도를 낮춥니다.

max_execution_speed_bytes

유형
UInt64
기본값
0

초당 실행 바이트 수의 최댓값입니다. timeout_before_checking_execution_speed 시간이 경과하면 각 데이터 블록마다 확인합니다. 실행 속도가 너무 높으면 속도를 낮춥니다.

max_execution_time

유형
Seconds
기본값
0

초 단위의 최대 쿼리 실행 시간입니다.

max_execution_time 매개변수는 다소 이해하기 어려울 수 있습니다. 이 설정은 현재 쿼리 실행 속도를 기준으로 보간하여 동작합니다 (이 동작은 timeout_before_checking_execution_speed로 제어됩니다).

예상 실행 시간이 지정된 max_execution_time를 초과하면 ClickHouse가 쿼리를 중단합니다. 기본적으로 timeout_before_checking_execution_speed는 10초로 설정되어 있습니다. 즉, 쿼리가 10초 동안 실행된 후부터 ClickHouse가 전체 실행 시간을 추정하기 시작합니다. 예를 들어 max_execution_time를 3600초(1시간)로 설정한 경우, 예상 시간이 이 3600초 제한을 초과하면 ClickHouse가 쿼리를 종료합니다. timeout_before_checking_execution_speed를 0으로 설정하면 ClickHouse는 max_execution_time의 기준으로 경과 시간을 사용합니다.

쿼리 런타임이 지정된 초 수를 초과하면 동작은 timeout_overflow_mode에 따라 결정되며, 기본값은 throw입니다.

max_execution_time_leaf

유형
Seconds
기본값
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