Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

optimize_and_compare_chain_* 세션 설정

이 설정은 system.settings에서 확인할 수 있으며, 소스 코드에서 자동 생성됩니다.

optimize_and_compare_chain

유형
Bool
기본값
1
버전 이력
버전기본값설명
25.21새로운 설정

필터링 기능을 향상하기 위해 AND 체인에서 상수 비교를 전파합니다. <, <=, >, >=, = 연산자와 이들의 혼합을 지원합니다. 예를 들어 (a < b) AND (b < c) AND (c < 5)(a < b) AND (b < c) AND (c < 5) AND indexHint(b < 5) AND indexHint(a < 5)로 확장됩니다. 파생된 비교는 indexHint로 래핑됩니다. 즉, 인덱스 분석(프라이머리 키, 파티션 키, 스키핑 인덱스)에 참여하여 읽기 집합을 프루닝하지만, 행당 비용이 없고 PREWHERE에 영향을 주지 않습니다. 서로 다른 테이블의 표현식을 통해 파생된 비교는 실행 가능한 상태로 유지됩니다((t1.a < t2.b) AND (t2.b < 5)는 일반 t1.a < 5를 파생함). 이는 원래 체인이 도달할 수 없는 조인 입력을 필터링할 수 있도록 조인 아래로 푸시할 수 있는 유일한 조건입니다. 기존 조건과 모순되는 파생 비교도 일반 조건으로 추가되므로 ANDfalse로 축약됩니다.

optimize_and_compare_chain_max_hash_work

유형
UInt64
기본값
5000000
버전 이력
버전기본값설명
26.75000000`optimize_and_compare_chain` 최적화의 작업량(해시된 쿼리 트리 노드 수 기준)에 상한을 두는 새로운 설정입니다. 비교 `AND`-chain이 매우 많거나 매우 큰 쿼리에서 이 최적화가 쿼리 분석 시간의 대부분을 차지하지 않도록 합니다. 이전 값인 `0`(무제한)은 이 최적화에 상한이 없던 26.7 이전 동작을 재현하므로, `compatibility`를 더 이전 버전으로 설정하면 예산 제한 없이 전이적 프레디케이트를 계속 도출합니다. 예산 제한을 비활성화하려면 `0`으로 설정하십시오.

쿼리 분석 중 optimize_and_compare_chain 최적화에 사용할 작업 예산으로, getTreeHash가 해시하는 쿼리 트리 노드 수(이 최적화의 주된 비용)로 측정합니다. 최적화 적용 중 해시한 노드 수가 이 값을 초과하면, 해당 쿼리의 나머지 부분에는 이 최적화를 더 이상 적용하지 않습니다. 이를 통해 비교 AND-chain이 매우 많거나 매우 큰 쿼리에서, 아무런 folding 없이 이 최적화가 분석 시간의 대부분을 차지할 수 있는 경우에도 분석 시간을 제한할 수 있습니다. 조기에 중단해도 항상 안전합니다. 단지 최적화 적용을 포기할 뿐이며, 결과는 절대 바뀌지 않습니다. 예산 제한을 비활성화하려면 0으로 설정하십시오(무제한).

Navigation