쿼리 실행 최적화

ClickHouse Inc에서 다양한 최적화 전략를 나열했습니다.

ClickHouse는 주요 인덱스 구조에 크게 의존합니다. 그러나 경우에 따라서는 쿼리가 주요 인덱스의 일부이지만 첫 번째 열이 아닌 열에 의존하는 경우도 있습니다. 다중 주요 인덱스 사용은 이러한 경우에 여러 옵션을 제공합니다. 예를 들어, 데이터 스킵 인덱스를 보조 인덱스로 사용하는 것 등이 있습니다.

복합 주요 인덱스의 경우, 주요 열의 데이터 특성을 이해하는 것이 매우 유용합니다. 주요 열을 효율적으로 정렬은 이러한 개념에 대해 자세히 설명합니다.

ClickHouse 블로그에는 ClickHouse 쿼리의 성능을 향상시키는 방법을 개요로 제시한 매우 좋은 게시물이 있습니다.

쿼리 파이프라인의 가시적인 단계를 얻기 위해 쿼리에 EXPLAIN 문을 사용할 수도 있습니다. EXPLAIN의 다양한 유형에 주목하세요.

또한 상세한 쿼리 실행 파이프라인을 얻으려면 clickhouse-client를 통해 로그 수준을 trace로 전환한 다음 쿼리를 실행할 수 있습니다.

예를 들면:

$ clickhouse-client :) SET send_logs_level = 'trace'
$ clickhouse-client :) select count(traceID) from jaeger_index WHERE tenant = '12' AND service != 'jaeger-query' FORMAT Vertical ;

SELECT count(traceID)
FROM jaeger_index
WHERE (tenant = '12') AND (service != 'jaeger-query')
FORMAT Vertical

Query id: 6ce40daf-e1b1-4714-ab02-268246f3c5c9

[cluster-0-0-0] 2023.01.30 06:31:32.240819 [ 4991 ] {6ce40daf-e1b1-4714-ab02-268246f3c5c9} <Debug> executeQuery: (from 127.0.0.1:53654) select count(traceID) from jaeger_index WHERE tenant = '12' AND service != 'jaeger-query' FORMAT Vertical ; (stage: Complete)
....