스필링 속성

스필링 속성 (Spilling properties)

이 속성들은 디스크 스필(Spill to disk)을 제어해요.

출처: 문서

본문

spill-enabled

  • 타입: boolean
  • 기본값: false
  • 세션 속성: spill_enabled

쿼리의 메모리 한도 초과를 피하기 위해 메모리를 디스크로 스필하도록 시도할지 여부예요.

스필링은 메모리를 디스크로 내리는(offload) 방식으로 동작해요. 이 과정은 실행 시간이 느려지는 대가로 큰 메모리 사용량을 가진 쿼리가 통과할 수 있게 해 줘요. 스필링은 집계, 조인(내부·외부), 정렬, 윈도우 함수에서 지원돼요. 이 속성은 다른 조인 유형에 필요한 메모리 사용량을 줄여주지는 않아요.

spiller-spill-path

  • 타입: string
  • 기본값 없음. 스필링이 활성화되면 반드시 설정해야 해요.

스필된 콘텐츠가 기록되는 디렉토리예요. 쉼표로 구분된 목록일 수 있어서 여러 디렉토리에 동시에 스필할 수 있고, 시스템에 장착된 여러 드라이브를 활용하는 데 도움이 돼요.

시스템 드라이브로 스필하는 것은 권장하지 않아요. 가장 중요한 것은 JVM 로그가 기록되는 드라이브로는 스필하지 말라는 거예요. 디스크 과다 사용으로 JVM이 오랫동안 멈추면 쿼리가 실패할 수 있어요.

spiller-max-used-space-threshold

  • 타입: double
  • 기본값: 0.9

주어진 스필 경로의 디스크 사용 비율이 이 임계값을 넘으면, 그 스필 경로는 스필링 대상이 될 수 없어요.

spiller-threads

  • 타입: integer
  • 기본값: 스필 디렉토리 수 곱하기 2 (최솟값 4)

스필러 스레드 수예요. 기본값이 기본 스필링 장치를 포화시키지 못하면(예: RAID를 쓸 때) 이 값을 늘리세요.

max-spill-per-node

단일 노드에서 모든 쿼리가 사용할 최대 스필 공간이에요. 워커 노드에서만 구성하면 돼요.

query-max-spill-per-node

단일 노드에서 단일 쿼리가 사용할 최대 스필 공간이에요. 워커 노드에서만 구성하면 돼요.

aggregation-operator-unspill-memory-limit

단일 집계 연산자 인스턴스를 언스필(unspill)하는 데 사용하는 메모리 한도예요.

spill-compression-codec

  • 타입: string
  • 허용 값: NONE, LZ4, ZSTD
  • 기본값: NONE

페이지를 디스크로 스필할 때 사용할 압축 코덱이에요.

spill-encryption-enabled

디스크로 스필된 데이터를 암호화·복호화하기 위해 (스필 파일마다) 무작위로 생성된 비밀 키를 사용할지 여부예요.

더 알아보기 (Learn more)

스필링이 실제로 어떻게 동작하는지 궁금하다면 디스크 스필(Spill to disk) 문서를 이어서 읽어 보세요.