apply_* 세션 설정
apply_* 세션 설정
이 설정들은 삭제 마스크, mutation 적용, PREWHERE/행 정책을 FINAL 처리 전후에 어떻게 적용할지, 그리고 서버 설정 수용 여부를 제어해요. ClickHouse 소스 코드에서 자동으로 생성된 세션 설정 문서예요.
출처: 문서
본문
이 설정들은 system.settings에서 사용할 수 있으며 소스 코드에서 자동으로 생성돼요.
apply_deleted_mask
경량 DELETE로 삭제된 행을 걸러내는 것을 활성화해요. 비활성화하면 쿼리가 그 행을 읽을 수 있어요. 이는 디버깅과 "삭제 취소(undelete)" 시나리오에 유용해요.
apply_mutations_on_fly
true이면 데이터 파트에 구체화되지 않은 mutation(UPDATE와 DELETE)이 SELECT에서 적용돼요.
apply_prewhere_after_final
활성화하면 ReplacingMergeTree 및 유사 엔진에 대해 PREWHERE 조건이 FINAL 처리 후에 적용돼요. PREWHERE가 중복 행에 걸쳐 서로 다른 값을 가질 수 있는 열을 참조하고, 필터링 전에 FINAL이 승리 행을 선택하기를 원할 때 유용할 수 있어요. 비활성화하면 PREWHERE는 읽는 동안 적용돼요. 참고: apply_row_level_security_after_final이 활성화되고 행 정책이 정렬 키가 아닌 열을 사용한다면, 올바른 실행 순서를 유지하기 위해 PREWHERE도 지연돼요(행 정책은 PREWHERE 전에 적용되어야 해요).
apply_row_policy_after_final
활성화하면 *MergeTree 테이블에 대해 FINAL 처리 후에 행 정책과 PREWHERE가 적용돼요(특히 ReplacingMergeTree). 비활성화하면 행 정책이 FINAL 전에 적용되는데, 정책이 ReplacingMergeTree나 유사 엔진에서 중복 제거에 사용되어야 할 행을 걸러내면 결과가 달라질 수 있어요.
행 정책 표현식이 ORDER BY의 열에만 의존한다면 최적화로 여전히 FINAL 전에 적용돼요. 그런 필터링은 중복 제거 결과에 영향을 줄 수 없기 때문이에요.
가능한 값:
- 0 — 행 정책과
PREWHERE가FINAL전에 적용(기본값). - 1 — 행 정책과
PREWHERE가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)이 있었지만, 이후 사용성을 높이기 위해 이 클라이언트 설정으로 대체되었어요.