Milvus
Zilliz
홈페이지

계층형 스토리지 모범 사례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을 초과하는 값은 피하세요.

과도한 오버 커밋은 캐시 쓰래싱과 불안정한 지연 시간을 유발할 수 있습니다.

모니터링

캐시 적중률, 리소스 사용률, 퇴거 빈도를 추적하세요.

콜드 로드가 자주 발생하면 워밍업 또는 워터마크 조정이 필요하다는 의미일 수 있습니다.

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
피드백

이 페이지가 도움이 되었나요?