메인 콘텐츠로 건너뛰기
DataStore에는 출력 형식을 pandas 호환에 맞출지, 아니면 Raw SQL 성능에 맞게 최적화할지를 제어하는 2가지 호환 모드가 있습니다.

개요

성능 모드에서 비활성화되는 항목


성능 모드 활성화

구성 객체 사용하기

모듈 수준의 함수 사용하기

편의 import 사용하기

성능 모드를 사용하면 실행 엔진이 자동으로 chdb로 설정되므로 config.use_chdb()를 별도로 호출할 필요가 없습니다.

성능 모드를 사용해야 하는 경우

다음과 같은 경우 성능 모드를 사용하세요:
  • 대규모 데이터셋을 처리하는 경우(수십만~수백만 개의 행)
  • 집계 비중이 큰 워크로드를 실행하는 경우(groupby, sum, mean, count)
  • 행 순서가 중요하지 않은 경우(예: 집계된 결과, 보고서, 대시보드)
  • SQL 처리량을 최대화하고 오버헤드를 최소화하려는 경우
  • 메모리 사용량이 우려되는 경우(병렬 Parquet 읽기, 중간 DataFrame 없음)
다음과 같은 경우 pandas 모드를 유지하세요:
  • pandas의 동작을 정확히 따라야 하는 경우(행 순서, MultiIndex, dtypes)
  • first()/last()가 실제 첫 번째/마지막 행을 반환해야 하는 경우
  • 행 순서에 의존하는 shift(), diff(), cumsum()를 사용하는 경우
  • DataStore 출력과 pandas를 비교하는 테스트를 작성하는 경우

동작 차이점

행 순서

성능 모드에서는 어떤 작업을 수행하더라도 행 순서가 보장되지 않습니다. 여기에는 다음이 포함됩니다.
  • 필터 결과
  • GroupBy 집계 결과
  • 명시적인 sort_values() 없이 사용하는 head() / tail()
  • first() / last() 집계
순서가 정해진 결과가 필요하면 명시적으로 sort_values()를 추가하십시오:

GroupBy 결과

집계

단일 SQL 실행

성능 모드에서는 ColumnExpr groupby 집계(예: ds[condition].groupby('col')['val'].sum())가 pandas 모드의 2단계 처리 방식 대신 하나의 SQL 쿼리로 실행됩니다:
이렇게 하면 중간 DataFrame을 머티리얼라이즈하는 과정이 없어져 메모리 사용량과 실행 시간을 크게 줄일 수 있습니다.

실행 엔진과의 비교

성능 모드(compat_mode)와 실행 엔진(execution_engine)은 서로 독립적인 구성 요소입니다: 성능 모드는 SQL 실행용으로 설계되었으므로, compat_mode='performance'로 설정하면 execution_engine='chdb'도 자동으로 설정됩니다.

성능 모드로 테스트하기

성능 모드용 테스트를 작성할 때 결과는 행 순서나 구조적 포맷 면에서 pandas와 다를 수 있습니다. 다음 전략을 사용하세요:

정렬한 뒤 비교(집계, 필터)

값 범위 점검(처음/마지막)

스키마 및 개수(ORDER BY 없는 LIMIT)


권장 사항

1. 스크립트 초반에 활성화하세요

2. 순서가 중요한 경우 명시적으로 정렬하세요

3. 배치/ETL 워크로드에 활용

4. 세션 내에서 모드 전환하기