optimize_skip_* 세션 설정

optimize_skip_* 세션 설정

이 페이지에서는 불필요한 작업을 건너뛰는 다양한 optimize_skip_* 세션 설정들을 다뤄요. 병합된 파티션, 사용하지 않는 샤드 등을 건너뛰어 쿼리 성능을 개선해요. 이 설정들은 system.settings 테이블에서 확인할 수 있으며 ClickHouse 소스에서 자동 생성돼요.

출처: 문서

본문

이 설정들은 system.settings에서 확인할 수 있으며 소스에서 자동 생성돼요.

optimize_skip_merged_partitions

레벨이 0보다 큰 파티션이 하나뿐이고 만료된 TTL이 없을 때 OPTIMIZE TABLE … FINAL 쿼리에 대한 최적화를 활성화 또는 비활성화해요.

  • OPTIMIZE TABLE ... FINAL SETTINGS optimize_skip_merged_partitions=1

기본적으로 OPTIMIZE TABLE ... FINAL 쿼리는 단일 파티션뿐이라도 그 파티션 하나를 다시 작성해요. 가능한 값:

  • 1 - 최적화 활성화.

  • 0 - 최적화 비활성화.

optimize_skip_unused_shards

WHERE/PREWHERE에 샤딩 키 조건이 있는 SELECT 쿼리에서 사용하지 않는 샤드를 건너뛰는 최적화를 활성화 또는 비활성화하고, 분산 쿼리 관련 최적화(예: 샤딩 키 기준 집계)를 활성화해요. 데이터가 샤딩 키로 분산되어 있다고 가정하며, 그렇지 않으면 쿼리가 잘못된 결과를 내요. 가능한 값:

  • 0 — 비활성화.

  • 1 — 활성화.

optimize_skip_unused_shards_limit

샤딩 키 값 수의 제한으로, 이 제한에 도달하면 optimize_skip_unused_shards를 끄는 방식이에요. 값이 너무 많으면 처리에 상당한 양이 필요할 수 있는데, 이점은 의심스러워요. IN (...)에 엄청난 수의 값이 있다면 어차피 쿼리가 모든 샤드로 전송될 가능성이 크기 때문이에요.

optimize_skip_unused_shards_nesting

optimize_skip_unused_shards (따라서 여전히 optimize_skip_unused_shards가 필요)를 분산 쿼리의 중첩 수준에 따라 제어해요(다른 Distributed 테이블을 참조하는 Distributed 테이블이 있는 경우). 가능한 값:

  • 0 — 비활성화, optimize_skip_unused_shards는 항상 동작해요.

  • 1 — 첫 번째 수준에서만 optimize_skip_unused_shards를 활성화해요.

  • 2 — 두 번째 수준까지 optimize_skip_unused_shards를 활성화해요.

optimize_skip_unused_shards_rewrite_in

원격 샤드에 대한 쿼리의 IN을 샤드에 속하지 않는 값을 제외하도록 재작성해요(optimize_skip_unused_shards 필요). 가능한 값:

  • 0 — 비활성화.

  • 1 — 활성화.

더 알아보기 (Learn more)