계층형 스토리지 모범 사례Compatible with Milvus 2.6.4+
Milvus는 대규모 데이터를 효율적으로 처리하는 동시에 쿼리 지연 시간, 용량 및 리소스 사용량의 균형을 맞출 수 있도록 계층형 스토리지를 제공합니다. 이 가이드에서는 일반적인 워크로드에 대한 권장 구성을 요약하고 각 튜닝 전략의 근거를 설명합니다.
시작하기 전에
Milvus v2.6.4 이상
쿼리 노드에는 전용 로컬 리소스(메모리 및 디스크)가 있어야 합니다. 공유 환경에서는 캐시 추정이 왜곡되어 퇴출이 잘못 판단될 수 있습니다.
올바른 전략 선택
계층형 스토리지는 워크로드에 맞게 조합할 수 있는 유연한 로딩 및 캐싱 전략을 제공합니다.
목표 |
권장 초점 |
핵심 메커니즘 |
|---|---|---|
첫 번째 쿼리 지연 시간 최소화 |
중요 필드 미리 로드 |
워밍업 |
대규모 데이터의 효율적인 처리 |
온디맨드 로드 |
지연 로드 + 부분 로드 |
장기적인 안정성 유지 |
캐시 오버플로 방지 |
퇴거 |
성능과 용량 균형 유지 |
사전 로드와 동적 캐싱 결합 |
하이브리드 구성 |
시나리오 1: 실시간, 짧은 지연 시간 검색
사용 시기
쿼리 지연 시간이 중요한 경우(예: 실시간 추천 또는 검색 순위)
핵심 벡터 인덱스와 스칼라 필터에 자주 액세스하는 경우
시작 속도보다 일관된 성능이 더 중요한 경우
권장 구성
# milvus.yaml
queryNode:
segcore:
tieredStorage:
warmup:
# scalar field/index warm-up to eliminate first-time latency
scalarField: sync
scalarIndex: sync
# warm-up of vector fields is disabled (if the original vector is not required)
vectorField: disable
# vector indexes warm-up to elminate first-time latenct
vectorIndex: sync
# enable cache eviction, and also turn on background asynchronous eviction
# to reduce the triggering of synchronous eviction.
evictionEnabled: true
backgroundEvictionEnabled: true
memoryLowWatermarkRatio: 0.75
memoryHighWatermarkRatio: 0.8
diskLowWatermarkRatio: 0.75
diskHighWatermarkRatio: 0.8
# no expiration time, which avoids frequent reloading
cacheTtl: 0
근거
워밍업은 빈도가 높은 스칼라 및 벡터 인덱스의 첫 번째 히트 지연을 제거합니다.
백그라운드 퇴거는 쿼리를 차단하지 않고 캐시 압력을 안정적으로 유지합니다.
캐시 TTL을 비활성화하면 핫 데이터에 대한 불필요한 재로드를 방지할 수 있습니다.
시나리오 2: 오프라인, 배치 분석
사용 시기
쿼리 지연 시간 허용 오차가 높은 경우
워크로드에 대규모 데이터 세트 또는 많은 세그먼트가 포함된 경우
응답성보다 용량 및 처리량이 우선시되는 경우
권장 구성
# milvus.yaml
queryNode:
segcore:
tieredStorage:
enabled: true
warmup:
# disable scalar field/index warm-up to speed up loading
scalarField: disable
scalarIndex: disable
# disable vector field/index warm-up to speed up loading
vectorField: disable
vectorIndex: disable
# enable cache eviction, and also turn on background asynchronous eviction
# to reduce the triggering of synchronous eviction.
evictionEnabled: true
backgroundEvictionEnabled: true
memoryLowWatermarkRatio: 0.7
memoryHighWatermarkRatio: 0.85
diskLowWatermarkRatio: 0.7
diskHighWatermarkRatio: 0.85
# use 1 day expiration to clean unused cache
cacheTtl: 86400
근거
워밍업을 비활성화하면 많은 세그먼트를 초기화할 때 시작 속도가 빨라집니다.
워터마크가 높을수록 캐시를 더 조밀하게 사용할 수 있어 총 부하 용량이 향상됩니다.
캐시 TTL은 사용하지 않는 데이터를 자동으로 정리하여 로컬 공간을 확보합니다.
시나리오 3: 하이브리드 배포(온라인+오프라인 혼합)
사용 시기
단일 클러스터가 온라인 및 분석 워크로드를 모두 지원하는 경우
일부 컬렉션에는 짧은 지연 시간이 필요하고, 다른 컬렉션에는 용량이 우선시되는 경우
권장 전략
지연 시간에 민감한 컬렉션에 실시간 구성 적용
분석 또는 아카이브 컬렉션에 오프라인 구성 적용
각 워크로드 유형에 대해 evictableMemoryCacheRatio, cacheTtl 및 워터마크 비율을 독립적으로 조정합니다.
근거
구성을 결합하면 리소스 할당을 세밀하게 제어할 수 있습니다.
중요 컬렉션은 낮은 지연 시간을 보장하는 반면 보조 컬렉션은 더 많은 세그먼트와 데이터 양을 처리할 수 있습니다.
추가 튜닝 팁
측면 |
권장 사항 |
설명 |
|---|---|---|
워밍업 범위 |
쿼리 빈도가 높은 필드 또는 인덱스만 미리 로드합니다. |
불필요한 사전 로딩은 로드 시간과 리소스 사용을 증가시킵니다. |
퇴거 조정 |
기본 워터마크(75~80%)로 시작하여 점진적으로 조정합니다. |
간격이 작으면 빈번한 퇴거가 발생하고 간격이 크면 리소스 릴리스가 지연됩니다. |
캐시 TTL |
안정적인 핫 데이터 세트의 경우 비활성화, 동적 데이터의 경우 활성화(예: 1~3일)합니다. |
오래된 캐시 축적을 방지하는 동시에 정리 오버헤드의 균형을 맞춥니다. |
초과 커밋 비율 |
리소스 여유 공간이 크지 않은 한 0.7을 초과하는 값은 피하세요. |
과도한 오버 커밋은 캐시 쓰래싱과 불안정한 지연 시간을 유발할 수 있습니다. |
모니터링 |
캐시 적중률, 리소스 사용률, 퇴거 빈도를 추적하세요. |
콜드 로드가 자주 발생하면 워밍업 또는 워터마크 조정이 필요하다는 의미일 수 있습니다. |