use_skip_indexes* 세션 설정

use_skip_indexes* 세션 설정

이 페이지에서는 데이터 스킵 인덱스 사용과 관련된 use_skip_indexes* 세션 설정들을 다뤄요. 쿼리 실행 중, 접속사(disjunction) 조건, TopK, FINAL 수정자, 데이터 읽기 시 스킵 인덱스 사용을 각각 제어해요. 이 설정들은 system.settings 테이블에서 확인할 수 있으며 ClickHouse 소스에서 자동 생성돼요.

출처: 문서

본문

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

use_skip_indexes

쿼리 실행 중 데이터 스킵 인덱스를 사용해요. 가능한 값:

  • 0 — 비활성화.

  • 1 — 활성화.

use_skip_indexes_for_disjunctions

ANDOR 조건이 섞인 WHERE 필터를 스킵 인덱스로 평가해요. 예: WHERE A = 5 AND (B = 5 OR C = 5). 비활성화하면 스킵 인덱스는 여전히 WHERE 조건을 평가하는 데 사용되지만 AND로 연결된 절만 포함해야 해요. 가능한 값:

  • 0 — 비활성화.

  • 1 — 활성화.

use_skip_indexes_for_top_k

TopK 필터링에 데이터 스킵 인덱스를 사용할 수 있게 해요. 활성화하면 ORDER BY <column> LIMIT n 쿼리의 컬럼에 minmax 스킵 인덱스가 있으면, 최적화기가 minmax 인덱스를 사용해 최종 결과와 관련 없는 granule을 건너뛰려고 시도해요. 이는 쿼리 지연을 줄일 수 있어요. 가능한 값:

  • 0 — 비활성화.

  • 1 — 활성화.

use_skip_indexes_if_final

FINAL 수정자로 쿼리를 실행할 때 스킵 인덱스를 사용할지 여부를 제어해요. 스킵 인덱스는 최신 데이터를 포함한 행(granule)을 제외할 수 있어, FINAL 수정자의 쿼리에서 잘못된 결과를 초래할 수 있어요. 이 설정이 활성화되면 FINAL 수정자에서도 스킵 인덱스가 적용되어 성능이 향상될 수 있어요. 올바른 결과는 여전히 use_skip_indexes_if_final_exact_mode 설정에 의존하는데, 기본적으로 활성화되어 있으며 스킵 인덱스가 반환한 범위와 겹치는 추가 파트를 스캔해요. 최근 업데이트 누락 위험은 그 설정이 비활성화된 경우에만 적용돼요. 가능한 값:

  • 0 — 비활성화.

  • 1 — 활성화.

use_skip_indexes_if_final_exact_mode

FINAL 수정자로 쿼리를 실행할 때, 스킵 인덱스가 반환한 granule을 더 새로운 파트에서 확장하여 올바른 결과를 반환할지 여부를 제어해요. 스킵 인덱스 사용은 최신 데이터를 포함한 행(granule)을 제외할 수 있어 잘못된 결과를 초래할 수 있어요. 이 설정은 스킵 인덱스가 반환한 범위와 겹치는 더 새로운 파트를 스캔하여 올바른 결과를 반환하도록 보장할 수 있어요. 애플리케이션에 스킵 인덱스 조회 기반의 근사 결과가 괜찮을 때만 이 설정을 비활성화해야 해요. 가능한 값:

  • 0 — 비활성화.

  • 1 — 활성화.

use_skip_indexes_on_data_read

데이터 읽기 중 데이터 스킵 인덱스를 사용할 수 있게 해요. 활성화하면 스킵 인덱스는 쿼리 실행이 시작되기 전에 미리 분석되는 것이 아니라, 각 데이터 granule이 읽힐 때 동적으로 평가돼요. 이는 쿼리 시작 지연을 줄일 수 있어요. 가능한 값:

  • 0 — 비활성화.

  • 1 — 활성화.

더 알아보기 (Learn more)