최대 실행 관련 설정

최대 실행 관련 설정

쿼리 실행 속도, 실행 시간, 그리고 리프 노드의 실행 시간을 제어하는 설정들이에요. 이 설정들은 system.settings 테이블에서 확인할 수 있고 소스 코드에서 자동 생성된 값들이에요.

출처: 문서

본문

이 설정들은 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의 기준으로 사용해요.

쿼리 실행 시간이 지정된 초 수를 초과하면 동작은 기본값이 throw인 'timeout_overflow_mode'로 결정돼요. 타임아웃은 데이터 처리 중 지정된 위치에서만 확인되고 쿼리는 그곳에서만 멈출 수 있어요. 현재는 집계 상태 병합 중이나 대부분의 쿼리 분석 중에는 멈출 수 없고(원격 레플리카에 연결을 설정하는 것은 멈출 수 있는 위치 중 하나), 실제 실행 시간은 이 설정의 값보다 높아질 수 있어요.

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;

더 알아보기 (Learn more)