Skip to main content
이 설정은 system.settings에서 확인할 수 있으며 소스를 기반으로 자동 생성됩니다.

apply_deleted_mask

경량한 DELETE로 삭제된 행을 필터링해 제외합니다. 비활성화하면 쿼리에서 해당 행을 읽을 수 있습니다. 이는 디버깅이나 “삭제 취소” 시나리오에 유용합니다

apply_mutations_on_fly

true로 설정하면 데이터 파트(data part)에 아직 구체화되지 않은 뮤테이션(UPDATE 및 DELETE)이 SELECT 시 적용됩니다.

apply_prewhere_after_final

활성화하면 ReplacingMergeTree 및 유사한 엔진에서 PREWHERE 조건이 FINAL 처리 후에 적용됩니다. 이는 PREWHERE가 중복된 행마다 값이 다를 수 있는 컬럼을 참조하고, 필터링 전에 FINAL이 최종적으로 남을 행을 먼저 선택하도록 하려는 경우에 유용합니다. 비활성화하면 PREWHERE는 읽는 동안 적용됩니다. 참고: 행 정책이 apply_row_policy_after_final에 의해 지연되면 이 설정과 관계없이 PREWHERE도 지연됩니다. 행 정책은 PREWHERE보다 먼저 적용되어야 하기 때문입니다. 이러한 지연은 정책 표현식이 비결정적이거나, ORDER BY에 포함되지 않은 컬럼을 읽거나, 부동소수점 타입이거나 이를 포함하는 타입의 ORDER BY 컬럼을 읽을 때 발생합니다. 가능한 값:
  • 0 — PREWHERE는 FINAL 이전에 적용됩니다. 단, 지연된 행 정책으로 인해 함께 지연되는 경우는 예외입니다(기본값).
  • 1 — PREWHERE는 FINAL 이후에 적용됩니다.

apply_row_policy_after_final

활성화하면 행 정책이 *MergeTree 테이블에서 FINAL 처리 후에 적용됩니다. (특히 ReplacingMergeTree에서 중요합니다.) 이와 같이 정책 적용이 지연되면, 정책이 계속 먼저 적용되도록 PREWHERE도 함께 지연됩니다 (PREWHERE를 조건 없이 항상 지연하려면 apply_prewhere_after_final을 참조하십시오). 비활성화하면 행 정책이 FINAL 전에 적용되므로, 정책이 ReplacingMergeTree 또는 유사한 엔진에서 중복 제거에 사용되어야 하는 행을 필터링하는 경우 결과가 달라질 수 있습니다. 행 정책 표현식이 결정적(deterministic)이고 ORDER BY에 포함된 부동소수점이 아닌 컬럼에만 의존하는 경우에는 최적화를 위해 여전히 FINAL 전에 적용됩니다. 이러한 필터링은 중복 제거 결과에 영향을 주지 않기 때문입니다. 부동소수점 컬럼 또는 부동소수점 값을 포함하는 컬럼(예: Tuple(Float64, ...), Array(Float64), Nullable(Float64) 등)은 이 최적화에서 제외됩니다. -0.0과 0.0은 중복 제거 시 하나의 키로 취급되지만, 정책 조건에서는 두 값을 구분할 수 있기 때문입니다. 가능한 값:
  • 0 — 행 정책이 FINAL 전에 적용됩니다.
  • 1 — 행 정책이 FINAL 후에 적용됩니다(기본값).

apply_settings_from_server

클라이언트가 서버의 설정을 받아들일지 여부를 지정합니다. 이 설정은 클라이언트 측에서 수행되는 작업에만 영향을 줍니다. 특히 INSERT 입력 데이터 파싱과 쿼리 결과 출력 형식 지정에 영향을 미칩니다. 쿼리 실행의 대부분은 서버에서 이루어지므로 이 설정의 영향을 받지 않습니다. 일반적으로 이 설정은 클라이언트(클라이언트 명령줄 인수, SET 쿼리 또는 SELECT 쿼리의 SETTINGS 섹션)가 아니라 사용자 프로필(users.xml 또는 ALTER USER 같은 쿼리)에서 설정해야 합니다. 클라이언트를 통해 false로 변경할 수는 있지만 true로는 변경할 수 없습니다(사용자 프로필에 apply_settings_from_server = false가 설정되어 있으면 서버가 설정을 보내지 않기 때문입니다). 참고로 초기에(24.12) send_settings_to_client라는 서버 설정이 있었지만, 이후 사용성을 개선하기 위해 이 클라이언트 설정으로 대체되었습니다.

apply_string_filters_during_scan

String 컬럼에 대한 부분 문자열 검색 조건을 PREWHERE에서 컬럼 스캔으로 푸시다운합니다. PREWHERE 조건에 String(또는 Nullable(String)) 컬럼에서 비어 있지 않은 부분 문자열을 검색하는 결합항 (LIKE, position, startsWith, endsWith, 또는 비어 있지 않은 문자열과의 동등 비교)이 포함되어 있으면, 리더는 역직렬화 과정에서 모든 값을 이 조건과 대조하고 일치하지 않는 값은 빈 문자열로 읽습니다. 일치하지 않는 값의 데이터는 컬럼에 복사되지 않으므로, 조건의 선택도가 높을수록 읽기 속도가 빨라지고 메모리 사용량이 줄어듭니다. 일치하지 않는 값을 가진 행은 PREWHERE에서 반드시 필터링되고 이러한 조건은 빈 문자열과 일치하는 경우가 없으므로, 쿼리 결과는 달라지지 않습니다. 필터의 선택도가 낮은 것으로 확인되면 런타임에 필터가 적응적으로 비활성화됩니다. 또한 부분 문자열 검색 조건(LIKE, position, startsWith, endsWith)이 쿼리 대상 컬럼을 모두 사용하는 경우에도 WHERE에서 PREWHERE로의 최적화를 통해 이동될 수 있도록 합니다(일반적으로는 의미가 없지만, 이 설정을 사용하면 스캔 자체의 비용이 낮아집니다). 상수 문자열과의 동등 비교는 이러한 목적으로 이동되지 않지만, 이미 PREWHERE에 있다면 스캔 중에 그대로 적용됩니다. MergeTree 테이블과 Parquet 포맷에서 읽을 때 지원됩니다. 병렬 레플리카 사용 여부를 자동으로 결정하기 위해 수집되는 입력 바이트 추정치(RuntimeDataflowStatisticsInputBytes)는 읽은 블록의 인메모리 크기를 기준으로 하므로, 값이 빈 문자열로 대체되면 디스크에서 읽은 데이터 양이 실제보다 적게 추정된다는 점에 유의하십시오. 가능한 값:
  • 0 — 비활성화됨.
  • 1 — 활성화됨.