워밍업Compatible with Milvus 2.6.4+
Milvus에서 웜업은 콜드 데이터에 처음 액세스할 때 발생하는 첫 번째 히트 지연 시간을 완화하여 계층형 스토리지를 보완합니다. 일단 구성되면, 워밍업은 세그먼트가 쿼리 가능해지기 전에 선택한 유형의 필드 또는 인덱스를 캐시에 미리 로드하여 자주 액세스하는 데이터를 로드 후 즉시 사용할 수 있도록 합니다.
워밍업이 필요한 이유
계층형 스토리지의지연 로드는 초기에 메타데이터만 로드하여 효율성을 개선합니다. 하지만 필요한 청크나 인덱스를 오브젝트 스토리지에서 가져와야 하므로 콜드 데이터에 대한 첫 번째 쿼리에서 지연 시간이 발생할 수 있습니다.
워밍업은 세그먼트 초기화 중에 중요한 데이터를 사전에 캐싱하여 이 문제를 해결합니다.
특히 다음과 같은 경우에 유용합니다:
특정 스칼라 인덱스가 필터 조건에서 자주 사용되는 경우.
벡터 인덱스는 검색 성능에 필수적이며 즉시 준비되어야 합니다.
쿼리 노드 재시작 또는 새 세그먼트 로드 후 콜드 스타트 지연은 용납할 수 없습니다.
반면, 자주 쿼리되지 않는 필드나 인덱스에는 워밍업을 사용하지 않는 것이 좋습니다. 워밍업을 비활성화하면 세그먼트 로드 시간이 단축되고 캐시 공간이 절약되므로 큰 벡터 필드나 중요하지 않은 스칼라 필드에 이상적입니다.
구성
워밍업은 milvus.yaml 의 queryNode.segcore.tieredStorage.warmup 에서 제어됩니다. 스칼라 필드, 스칼라 인덱스, 벡터 필드 및 벡터 인덱스에 대해 개별적으로 구성할 수 있습니다. 각 대상은 두 가지 모드를 지원합니다:
모드 |
설명 |
일반적인 시나리오 |
|---|---|---|
|
세그먼트를 쿼리할 수 있게 되기 전에 미리 로드합니다. 로드 시간은 약간 증가하지만 첫 번째 쿼리에는 지연 시간이 발생하지 않습니다. |
검색에 사용되는 고빈도 스칼라 인덱스나 주요 벡터 인덱스와 같이 즉시 사용 가능해야 하는 성능에 중요한 데이터에 사용합니다. |
|
사전 로딩 건너뛰기. 세그먼트를 더 빠르게 쿼리할 수 있지만 첫 번째 쿼리에서 온디맨드 로드가 트리거될 수 있습니다. |
원시 벡터 필드나 중요하지 않은 스칼라 필드와 같이 자주 액세스하지 않거나 큰 데이터에 사용합니다. |
예제 YAML:
queryNode:
segcore:
tieredStorage:
warmup:
# options: sync, disable.
# Specifies the timing for warming up the Tiered Storage cache.
# - `sync`: data will be loaded into the cache before a segment is considered loaded.
# - `disable`: data will not be proactively loaded into the cache, and loaded only if needed by search/query tasks.
# Defaults to `sync`, except for vector field which defaults to `disable`.
scalarField: sync
scalarIndex: sync
vectorField: disable # cache warmup for vector field raw data is by default disabled.
vectorIndex: sync
매개변수 |
값 |
설명 |
권장 사용 사례 |
|---|---|---|---|
|
|
스칼라 필드 데이터를 미리 로드할지 여부를 제어합니다. |
스칼라 필드가 작고 필터에서 자주 액세스하는 경우에만 |
|
|
스칼라 인덱스가 미리 로드되는지 여부를 제어합니다. |
빈번한 필터 조건이나 범위 쿼리와 관련된 스칼라 인덱스에는 |
|
|
벡터 필드 데이터의 사전 로드 여부를 제어합니다. |
일반적으로 캐시를 많이 사용하지 않으려면 |
|
|
벡터 인덱스의 사전 로드 여부를 제어합니다. |
검색 지연에 중요한 벡터 인덱스의 경우 |
모범 사례
워밍업은 초기 로드에만 영향을 줍니다. 캐시된 데이터가 나중에 제거되면 다음 쿼리에서 필요에 따라 다시 로드됩니다.
sync을 과도하게 사용하지 마세요. 너무 많은 필드를 미리 로드하면 로드 시간과 캐시 압력이 증가합니다.자주 액세스하는 필드와 인덱스에 대해서만 워밍업을 보수적으로 사용하도록 설정하세요.
쿼리 지연 시간 및 캐시 메트릭을 모니터링한 다음 필요에 따라 사전 로딩을 확장합니다.
혼합 워크로드의 경우, 성능에 민감한 컬렉션에는
sync, 용량 중심 컬렉션에는disable을 적용하세요.