read_in_order_* 세션 설정

read_in_order_* 세션 설정

이 페이지에서는 기본 키 순서로 읽는 최적화와 관련된 read_in_order_* 세션 설정들을 다뤄요. 사전 병합 단계, 버퍼링, 가상 행 사용 등을 제어해 쿼리 병렬성과 성능을 높여요. 이 설정들은 system.settings 테이블에서 확인할 수 있으며 ClickHouse 소스에서 자동 생성돼요.

출처: 문서

본문

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

read_in_order_two_level_merge_threshold

기본 키 순서로 멀티스레드 읽는 동안 사전 병합 단계를 실행하기 위해 읽어야 하는 파트의 최소 개수예요.

read_in_order_use_buffering

기본 키 순서로 읽는 동안 병합 전에 버퍼링을 사용해요. 쿼리 실행의 병렬성을 높여줘요.

read_in_order_use_virtual_row

기본 키 또는 그 단조 함수 방식으로 읽는 동안 가상 행을 사용해요. 여러 파트를 검색할 때 유용한데, 실제로 결과에 기여할 수 있는 파트만 읽히고, 읽기를 병렬로 유지하는 최대 max_threads 파트의 제한된 read-ahead 창이 더해지기 때문이에요.

read_in_order_use_virtual_row_per_block

read_in_order_use_virtual_row와 함께 활성화하면 각 블록을 읽은 후에 가상 행을 내보내요(각 파트의 시작에서만이 아니라). 이를 통해 MergingSortedTransform이 소스를 더 자주 재우선순위화할 수 있는데, 다운스트림 필터가 많은 행을 버리고 데이터가 파트 간에 고르지 않게 분포할 때 유용해요. 단, 읽기에 대해 read_in_order_use_buffering 최적화와 사전 병합(read_in_order_two_level_merge_threshold)을 비활성화한다는 점에 유의해요.

더 알아보기 (Learn more)