단락 회로 함수 평가 세션 설정
단락 회로 함수 평가 세션 설정 (short_circuit_function_evaluation*)
이 페이지에서는 함수의 단락 회로(short-circuit) 평가와 관련된 short_circuit_function_evaluation* 세션 설정들을 다뤄요. 조건부·논리 함수의 실행을 최적화하고 NULL 값이 있는 함수 평가를 효율적으로 처리해요. 이 설정들은 system.settings 테이블에서 확인할 수 있으며 ClickHouse 소스에서 자동 생성돼요.
출처: 문서
본문
이 설정들은 system.settings에서 확인할 수 있으며 소스에서 자동 생성돼요.
short_circuit_function_evaluation
if, multiIf, and, or 함수를 단락 스킴에 따라 계산할 수 있게 해요. 이 함수들의 복잡한 표현식 실행을 최적화하고 예상치 못한 예외(예: 예상하지 않은 0으로 나누기)를 방지하는 데 도움을 줘요. 가능한 값:
-
enable— 적합한 함수(예외를 던질 수 있거나 계산 비용이 높은)에 대해 단락 회로 함수 평가를 활성화해요. -
force_enable— 모든 함수에 대해 단락 회로 함수 평가를 활성화해요. -
disable— 단락 회로 함수 평가를 비활성화해요.
short_circuit_function_evaluation_for_nulls
인자 중 하나라도 NULL이면 NULL을 반환하는 함수의 평가를 최적화해요. 함수의 인자에서 NULL 값의 비율이 short_circuit_function_evaluation_for_nulls_threshold를 초과하면 시스템은 함수를 행별로 평가하는 것을 건너뛰어요. 대신 모든 행에 대해 즉시 NULL을 반환하여 불필요한 계산을 피해요.
이 설정은 최적화만 제어해요. 인자의 기본값에 대해 실행할 수 없는 함수 — parseDateTime, IPv4StringToNum, intDiv 같은 — 는 이 설정과 무관하게 항상 NULL이 포함된 행을 건너뛰는데, NULL 뒤에 저장된 값이 인자 타입의 기본값이고 그 값에 대해 실행하면 정상적인 데이터에서 예외가 발생하기 때문이에요.
short_circuit_function_evaluation_for_nulls_threshold
Nullable 인자를 가진 함수를 모든 인자에서 NULL이 아닌 행에 대해서만 실행하기 위한 NULL 값의 비율 임계값이에요. short_circuit_function_evaluation_for_nulls 설정이 활성화된 경우 적용돼요.
NULL 값을 포함하는 행의 비율이 전체 행 수 대비 이 임계값을 초과하면, NULL 값을 포함하는 행은 평가되지 않아요.