JOIN 런타임 필터 관련 설정

JOIN 런타임 필터 관련 설정

JOIN 런타임 필터에서 사용하는 블룸 필터의 크기, 해시 함수 수, 정확한 값 집합의 한계 등을 제어하는 설정들이에요. 필터의 성능 저하를 방지하고 동적으로 재활성화하는 로직도 다룬답니다. 이 설정들은 system.settings 테이블에서 확인할 수 있고 소스 코드에서 자동 생성된 값들이에요.

출처: 문서

본문

이 설정들은 system.settings에서 확인할 수 있고, 소스 코드에서 자동 생성된 값들이에요.

join_runtime_bloom_filter_bytes

JOIN 런타임 필터로 사용되는 블룸 필터의 크기(바이트)예요(enable_join_runtime_filters 설정 참조).

join_runtime_bloom_filter_hash_functions

JOIN 런타임 필터로 사용되는 블룸 필터의 해시 함수 수예요(enable_join_runtime_filters 설정 참조).

join_runtime_bloom_filter_max_ratio_of_set_bits

런타임 블룸 필터의 설정된 비트 수가 이 비율을 초과하면 오버헤드를 줄이기 위해 필터가 완전히 비활성화돼요.

join_runtime_filter_blocks_to_skip_before_reenabling

필터링 비율이 좋지 않아 이전에 비활성화된 런타임 필터를 동적으로 다시 활성화하기 전에 건너뛰는 블록 수예요.

join_runtime_filter_exact_values_limit

런타임 필터에서 집합에 그대로 저장되는 최대 요소 수예요. 이 임계값을 초과하면 블룸 필터로 전환돼요.

join_runtime_filter_from_fixed_hash_table

해시 조인 빌드 측이 FixedHashMap으로 변환되었을 때(enable_join_fixed_hash_table_conversion 참조) 그 해시 맵을 런타임 필터로 직접 사용해요.

join_runtime_filter_min_probe_rows

쿼리 계획 시점에 JOIN의 프로브 측이 이보다 많은 행을 생성하지 않을 것으로 추정되면 JOIN 런타임 필터가 생성되지 않아요. 아주 작은 프로브 측에 대한 런타임 필터를 만들고 적용하는 것은 절약되는 것보다 비용이 더 들거든요. 추정 프로브 크기와 무관하게 항상 런타임 필터를 만들려면 0으로 설정하세요.

join_runtime_filter_pass_ratio_threshold_for_disabling

전달된 행 대 확인된 행의 비율이 이 임계값보다 크면 런타임 필터가 성능이 좋지 않은 것으로 간주되고, 오버헤드를 줄이기 위해 다음 join_runtime_filter_blocks_to_skip_before_reenabling 블록 동안 비활성화돼요.

join_runtime_filter_size_from_hash_table_stats

이전 실행에서 수집된 해시 테이블 크기 통계를 사용해 JOIN 런타임 필터의 크기를 정해요. 비활성화하면 고정된 join_runtime_bloom_filter_bytes로 돌아가요.

더 알아보기 (Learn more)