피드로 돌아가기
Dev.toDatabase
원문 읽기
Bounding Box 필터 도입을 통한 ClickHouse Full Table Scan 제거
greatCircleDistance in ClickHouse: Avoiding Full Table Scans
AI 요약
Context
ClickHouse의 greatCircleDistance 함수를 활용한 거리 계산 시 인덱스 활용 불가로 인한 성능 저하 발생. Sparse Index 구조 특성상 함수 기반 조건절 사용 시 전체 데이터를 스캔하는 Full Table Scan 유발.
Technical Solution
- Bounding Box 필터를 활용한 검색 범위 사전 제한 설계
- lat, lon 컬럼에 BETWEEN 조건절을 적용하여 Sparse Index를 통한 Range Pruning 활성화
- 인덱스 기반의 1차 필터링으로 처리 대상 Row 수를 획기적으로 축소
- 축소된 데이터셋에 대해서만 greatCircleDistance 정밀 계산을 수행하는 2단계 필터링 구조 채택
- 좌표계 단위(Degrees) 및 입력 순서(lat, lon)를 일치시킨 데이터 정밀도 확보
실천 포인트
- ClickHouse 사용 시 함수 기반 WHERE 절이 Index Skip을 방해하는지 확인 - Geo-spatial 쿼리 작성 전 Bounding Box를 통한 검색 공간 최적화 적용 여부 검토 - Sparse Index의 특성을 고려하여 Range Scan이 가능한 조건절을 우선 배치