Skip to main content
이 설정들은 system.settings에서 확인할 수 있으며, source로부터 자동으로 생성됩니다.

optimize_trivial_approximate_count_query

이러한 추정을 지원하는 저장소(예: EmbeddedRocksDB)의 단순 count 최적화에는 근사값을 사용합니다. 가능한 값:
  • 0 — 최적화가 비활성화됩니다.
    • 1 — 최적화가 활성화됩니다.

optimize_trivial_count_query

MergeTree의 메타데이터를 사용해 단순한 SELECT count() FROM table 쿼리를 최적화하는 기능을 활성화하거나 비활성화합니다. 행 수준 보안(row-level security)을 사용해야 하는 경우 이 설정을 비활성화하십시오. 가능한 값:
  • 0 — 최적화가 비활성화됩니다.
    • 1 — 최적화가 활성화됩니다.
관련 항목:

optimize_trivial_count_with_sparsity_filter

optimize_trivial_count_query 최적화를 SELECT count() FROM t WHERE col <op> const 형태의 쿼리까지 확장합니다. 여기서 <op> const는 행을 col의 기본값과 비기본값으로 정확히 구분해야 합니다. 그러면 count 값은 MergeTree가 이미 serialization.json에 유지하는 컬럼별 num_defaults / num_rows 카운터에서 데이터 스캔 없이 바로 처리됩니다. 인식되는 패턴:
  • Int* / UInt*, String / FixedString, Date / DateTime / DateTime64, Decimal*, UUID, IPv4 / IPv6 타입의 col = default(col) / col != default(col).
  • Nullable 컬럼의 IS NULL / IS NOT NULL.
  • String 컬럼의 empty(col) / notEmpty(col).
  • Bool 컬럼의 col = true / col != true.
  • 부호 없는 정수 컬럼의 col > 0, col >= 1, col < 1, col <= 0.
  • Int*, UInt*, Bool 컬럼의 단독 col / NOT col(truthy 검사).
등호 비교 패턴은 Float*, Enum*, Nullable, LowCardinality, 또는 복합 타입(Tuple, Array, Map, …)에는 적용되지 않습니다. 이러한 타입에서는 count가 일반 스캔 경로로 처리됩니다. 이 기능이 적용되려면 파트별 num_defaults 카운터가 정확해야 합니다. 대상 테이블에서 삽입과 머지 전에 MergeTree 테이블 설정 compute_exact_num_defaults_for_sparse_columns을 활성화하십시오. 이 설정 없이 기록된 파트는 재작성에서 자동으로 제외되므로, optimize_trivial_count_with_sparsity_filter만 활성화해서는 충분하지 않습니다. Nullable 컬럼의 IS NULL / IS NOT NULL 패턴의 경우, 해당 컬럼에는 추가로 serialization.jsonnum_defaults 항목이 있어야 합니다. 이는 삽입 / 머지 시점에 MergeTree 테이블 설정 nullable_serialization_versionallow_sparse로 설정된 경우에만 생성됩니다. 기본값 basic에서는 Nullable 컬럼에 컬럼별 항목이 생성되지 않으므로 이 최적화는 자동으로 적용되지 않습니다. 가능한 값:
  • 0 — 최적화가 비활성화됩니다.
    • 1 — 최적화가 활성화됩니다.
관련 항목:

optimize_trivial_group_by_limit_query

max_rows_to_group_by = n + offsetgroup_by_overflow_mode = 'any'를 설정하여 단순한 쿼리 SELECT key_expr FROM table GROUP BY key_expr LIMIT n의 최적화를 활성화하거나 비활성화합니다. 여기서 단순한 쿼리란 SELECT 항목에 집계 함수가 없고, HAVING/ORDER BY/LIMIT BY/윈도우 절이 없으며, GROUP BY 수정자도 없는 쿼리를 의미합니다. n + offset개의 고유 키가 생성되면 집계가 중지됩니다. 사용자가 group_by_overflow_modeany가 아닌 값으로 명시적으로 설정한 경우(명시한 throw/break 동작을 유지하기 위해), 또는 이미 더 엄격한 max_rows_to_group_by를 설정한 경우(이 최적화는 no-op이므로)에는 이 최적화가 적용되지 않습니다. 가능한 값:
  • 0 — 최적화가 비활성화됩니다.
  • 1 — 최적화가 활성화됩니다.

optimize_trivial_insert_select

단순한 ‘INSERT INTO table SELECT … FROM TABLES’ 쿼리를 최적화합니다
마지막 수정일 2026년 7월 24일