InfoGrab DocsInfoGrab Docs

쿼리 실행 최적화

ClickHouse에서 기본 인덱스, 보조 인덱스, EXPLAIN 구문 등을 활용하여 쿼리 실행 성능을 최적화하는 방법을 설명합니다.

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} executeQuery: (from 127.0.0.1:53654) select count(traceID) from jaeger_index WHERE tenant = '12' AND service != 'jaeger-query' FORMAT Vertical ; (stage: Complete) .... [cluster-0-0-0] 2023.01.30 06:31:32.244071 [ 4991 ] {6ce40daf-e1b1-4714-ab02-268246f3c5c9} InterpreterSelectQuery: MergeTreeWhereOptimizer: condition "service != 'jaeger-query'" moved to PREWHERE [cluster-0-0-0] 2023.01.30 06:31:32.244420 [ 4991 ] {6ce40daf-e1b1-4714-ab02-268246f3c5c9} InterpreterSelectQuery