스필링 속성
스필링 속성 (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
- 타입: data size
- 기본값:
100GB
단일 노드에서 모든 쿼리가 사용할 최대 스필 공간이에요. 워커 노드에서만 구성하면 돼요.
query-max-spill-per-node
- 타입: data size
- 기본값:
100GB
단일 노드에서 단일 쿼리가 사용할 최대 스필 공간이에요. 워커 노드에서만 구성하면 돼요.
aggregation-operator-unspill-memory-limit
- 타입: data size
- 기본값:
4MB
단일 집계 연산자 인스턴스를 언스필(unspill)하는 데 사용하는 메모리 한도예요.
spill-compression-codec
- 타입: string
- 허용 값:
NONE,LZ4,ZSTD - 기본값:
NONE
페이지를 디스크로 스필할 때 사용할 압축 코덱이에요.
spill-encryption-enabled
- 타입: boolean
- 기본값:
false
디스크로 스필된 데이터를 암호화·복호화하기 위해 (스필 파일마다) 무작위로 생성된 비밀 키를 사용할지 여부예요.
더 알아보기 (Learn more)
스필링이 실제로 어떻게 동작하는지 궁금하다면 디스크 스필(Spill to disk) 문서를 이어서 읽어 보세요.