parallel_replicas_* 세션 설정

parallel_replicas_* 세션 설정

이 페이지에서는 병렬 레플리카와 관련된 다양한 parallel_replicas_* 세션 설정들을 다뤄요. 병렬 레플리카 사용을 허용하는 조건, 연결 시간 초과, 사용자 지정 키, 마크 세그먼트 크기, 로컬 플랜 등을 제어해요. 이 설정들은 system.settings 테이블에서 확인할 수 있으며 ClickHouse 소스에서 자동 생성돼요.

출처: 문서

본문

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

parallel_replicas_allow_in_with_subquery

true이면 IN의 서브쿼리가 모든 팔로워 레플리카에서 실행돼요.

parallel_replicas_allow_materialized_views

병렬 레플리카와 함께 머티리얼라이즈드 뷰 사용을 허용해요.

parallel_replicas_allow_merge_tables

병렬 레플리카와 함께 Merge 테이블에서 읽는 것을 허용해요. parallel_replicas_plan_based와 함께일 때만 효과가 있어요: Merge 테이블에서의 읽기는 밑에 있는 MergeTree 테이블의 읽기들의 합집합으로 확장된 다음 다른 합집합처럼 분산돼요. 밑에 있는 테이블 중 하나를 그렇게 읽을 수 없으면(비-MergeTree 테이블, FINAL 읽기) Merge 테이블은 단일 레플리카에 남아요. 지원이 추가되기 전처럼 모든 Merge 테이블을 단일 레플리카에서 읽으려면 false로 설정해요. 실험적.

parallel_replicas_allow_view_over_mergetree

병렬 레플리카가 MergeTree 테이블 위의 단순 뷰의 외부 쿼리를(뷰의 내부 쿼리 대신) 실행하도록 허용하여, 노드 간 병렬화를 개선해요. 모든 분기가 서로 다른 MergeTree 테이블에서 읽는 UNION ALL 뷰에도 적용돼요.

parallel_replicas_connect_timeout_ms

병렬 레플리카로 쿼리 실행 중 원격 레플리카에 연결하는 시간 초과(밀리초)예요. 시간 초과가 만료되면 해당 레플리카는 쿼리 실행에 사용되지 않아요.

parallel_replicas_count

직접 사용해서는 안 되는 내부 설정이며, '병렬 레플리카' 모드의 구현 세부 사항을 나타내요. 이 설정은 분산 쿼리에 대해 쿼리 처리에 참여하는 병렬 레플리카의 수로 이니시에이터 서버에 의해 자동으로 설정돼요.

parallel_replicas_custom_key

특정 테이블에 대해 레플리카 간 작업을 나누는 데 사용할 수 있는 임의의 정수 표현식이에요. 값은 임의의 정수 표현식일 수 있어요. 기본 키를 사용하는 단순한 표현식이 선호돼요. 단일 샤드에 여러 레플리카로 구성된 클러스터에 이 설정을 사용하면 그 레플리카들이 가상 샤드로 변환돼요. 그렇지 않으면 SAMPLE 키와 동일하게 동작하며 각 샤드의 여러 레플리카를 사용해요. 표현식은 사용자의 컬럼 수준 SELECT 권한에 대해 확인돼요. SQL SECURITY DEFINER 또는 NONE이 있는 뷰의 경우 뷰의 컬럼에 적용되며, 뷰 본문은 그것 없이 읽혀요.

parallel_replicas_custom_key_range_lower

필터 타입 range가 사용자 지정 범위 [parallel_replicas_custom_key_range_lower, INT_MAX]를 기준으로 레플리카 간 작업을 균등하게 나누도록 허용해요. parallel_replicas_custom_key_range_upper와 함께 사용하면 필터가 범위 [parallel_replicas_custom_key_range_lower, parallel_replicas_custom_key_range_upper]에 대해 작업을 균등하게 나눌 수 있게 해줘요. 참고: 이 설정은 쿼리 처리 중 추가 데이터를 필터링하게 하지 않으며, 범위 필터가 병렬 처리를 위해 범위 [0, INT_MAX]를 나누는 지점을 바꿀 뿐이에요.

parallel_replicas_custom_key_range_upper

필터 타입 range가 사용자 지정 범위 [0, parallel_replicas_custom_key_range_upper]를 기준으로 레플리카 간 작업을 균등하게 나누도록 허용해요. 값 0은 상한을 비활성화하며, 사용자 지정 키 표현식의 최댓값으로 설정돼요. parallel_replicas_custom_key_range_lower와 함께 사용하면 필터가 범위 [parallel_replicas_custom_key_range_lower, parallel_replicas_custom_key_range_upper]에 대해 작업을 균등하게 나눌 수 있게 해줘요. 참고: 이 설정은 쿼리 처리 중 추가 데이터를 필터링하게 하지 않으며, 범위 필터가 병렬 처리를 위해 범위 [0, INT_MAX]를 나누는 지점을 바꿀 뿐이에요.

parallel_replicas_filter_pushdown

병렬 레플리카가 실행하기로 선택한 쿼리 부분으로 필터를 내리는 것을 허용해요.

parallel_replicas_for_cluster_engines

테이블 함수 엔진을 그 -Cluster 대안으로 대체해요.

parallel_replicas_for_non_replicated_merge_tree

true이면 ClickHouse가 비복제 MergeTree 테이블에도 병렬 레플리카 알고리즘을 사용해요.

parallel_replicas_index_analysis_only_on_coordinator

인덱스 분석이 레플리카 코디네이터에서만 수행되고 다른 레플리카에서는 건너뛰어져요. parallel_replicas_local_plan이 활성화된 경우에만 효과가 있어요.

parallel_replicas_insert_select_local_pipeline

병렬 레플리카가 있는 분산 INSERT SELECT 중 로컬 파이프라인을 사용해요.

parallel_replicas_local_plan

로컬 레플리카에 대한 로컬 플랜을 빌드해요.

parallel_replicas_mark_segment_size

파츠는 병렬 읽기를 위해 레플리카 간에 분산되는 세그먼트로 가상적으로 분할돼요. 이 설정은 그 세그먼트의 크기를 제어해요. 무엇을 하는지 확실하지 않으면 변경하지 않는 것이 좋아요. 값은 [128; 16384] 범위여야 해요.

parallel_replicas_min_number_of_rows_per_replica

쿼리에 사용되는 레플리카 수를 (추정 읽기 행 수 / min_number_of_rows_per_replica)로 제한해요. 최대값은 여전히 max_parallel_replicas로 제한돼요.

parallel_replicas_mode

병렬 레플리카에 대한 사용자 지정 키와 함께 사용할 필터 유형이에요. default - 사용자 지정 키에 모듈로 연산을 사용하고, range - 사용자 지정 키 값 타입의 모든 가능한 값을 사용한 범위 필터를 사용해요.

parallel_replicas_plan_based

쿼리 트리 기반 분석 대신 쿼리 플랜을 분석하여 병렬 레플리카를 어디서/사용할지 결정해요. 결과적으로 원격 레플리카에 SQL 쿼리 대신 플랜 조각이 전송돼요. 실험적.

parallel_replicas_prefer_local_join

true이고, JOIN을 병렬 레플리카 알고리즘으로 실행할 수 있고, 그렇지 않으면 임시 테이블로 구체화될 JOIN 부분의 모든 스토리지가 각 레플리카가 스스로 읽을 수 있다면, GLOBAL JOIN 대신 로컬 JOIN이 사용돼요. 그 부분은 오른쪽 부분이며, RIGHT JOIN에서는 왼쪽 부분이고 그 경우 모든 스토리지가 단순히 *MergeTree보다는 병렬 레플리카에 적격이어야 해요. 중첩 GLOBAL JOIN의 구체화된 쪽 또는 GLOBAL IN 아래의 스토리지는 이니시에이터가 그들을 스스로 구체화하므로 포함되지 않아요.

parallel_replicas_prefer_local_replica

활성화되면(기본값) 로컬 레플리카가 항상 병렬 읽기에 사용되는 레플리카 집합에 포함돼요. 비활성화하면 로컬 레플리카에 우선권이 주어지지 않고 레플리카는 로드 밸런싱 알고리즘에 의해서만 선택돼요. 이를 통해 max_parallel_replicas = 1인 쿼리를 다른 호스트로 보낼 수 있어, 많은 짧은 쿼리가 클러스터에 분산될 때 캐시 지역성을 개선할 수 있어요.

parallel_replicas_support_projection

병렬 레플리카에서 프로젝션 최적화를 적용할 수 있어요. parallel_replicas_local_plan이 활성화되고 aggregation_in_order가 비활성 상태일 때만 효과가 있어요.

더 알아보기 (Learn more)