Milvus
Zilliz
フロントページへ
  • ユーザーガイド
  • Home
  • Docs
  • ユーザーガイド

  • ストレージの最適化

  • 階層型ストレージ

  • ウォームアップ

ウォームアップCompatible with Milvus 2.6.4+

MilvusのWarm Upは、コールドデータが初めてアクセスされる際に発生するファーストヒットレイテンシを緩和することで、Tiered Storageを補完します。ウォームアップを設定すると、セグメントがクエリ可能になる前に、選択されたタイプのフィールドやインデックスがキャッシュにプリロードされ、頻繁にアクセスされるデータがロード後すぐに利用できるようになります。

ウォームアップの理由

ティアード・ストレージのレイジー・ロードは、メタデータのみを最初にロードすることで効率を向上させる。しかし、必要なチャンクやインデックスをオブジェクトストレージからフェッチする必要があるため、コールドデータへの最初のクエリで待ち時間が発生する可能性があります。

ウォームアップは、セグメントの初期化中に重要なデータを積極的にキャッシュすることで、この問題を解決します。

特に以下のような場合に有効です:

  • 特定のスカラー・インデックスがフィルター条件で頻繁に使用される。

  • ベクトル・インデックスは検索パフォーマンスに不可欠であり、すぐに準備する必要がある。

  • QueryNode 再起動後または新規セグメントロード後のコールドスタート待ち時間は容認できない。

対照的に、ウォームアップは、クエリーの頻度が低いフィールドやインデックスには推奨されません。ウォームアップを無効にすると、セグメントのロード時間が短縮され、キャッシュスペースが節約される。

構成

ウォームアップは、milvus.yamlqueryNode.segcore.tieredStorage.warmup で制御されます。 スカラー・フィールド、スカラー・インデックス、ベクター・フィールド、およびベクター・インデックスに対して個別に設定できます。各ターゲットは2つのモードをサポートしています:

モード

説明

典型的なシナリオ

sync

セグメントがクエリ可能になる前にプリロードする。ロード時間は若干長くなるが、最初のクエリに待ち時間は発生しない。

検索で使用される高頻度のスカラー・インデックスやキー・ベクター・インデックスなど、即座に利用可能でなければならないパフォーマンス・クリティカルなデータに使用する。

disable

プリロードをスキップする。セグメントはより速くクエリ可能になるが、最初のクエリがオンデマンドローディングのトリガーになる可能性がある。

未加工のベクトルフィールドや重要でないスカラーフィールドのような、アクセス頻度の低いデータや大きなデータに使います。

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

パラメータ

説明

推奨される使用例

scalarField

sync |disable

スカラーフィールドのデータをプリロードするかどうかを制御する。

スカラー・フィールドが小さく、フィルターで頻繁にアクセスされる場合のみ、sync を使用する。そうでない場合は、disable を使用してロード時間を短縮する。

scalarIndex

sync |disable

スカラー・インデックスをプリロードするかどうかを制御する。

頻繁なフィルター条件や範囲クエリーに関係するスカラー・インデックスにはsync を使用する。

vectorField

sync |disable

ベクトル・フィールド・データをプリロードするかどうかを制御する。

キャッシュの大量使用を避けるため、通常はdisable を使用する。sync を有効にするのは、検索後すぐに生のベクトルを取得する必要がある場合のみである(例えば、ベクトル・リコールによる類似結果)。

vectorIndex

sync |disable

ベクトルインデックスをプリロードするかどうかを制御します。

検索レイテンシにとって重要なベクトルインデックスにはsync を使用する。バッチまたは低頻度のワークロードでは、disable を使用すると、セグメントの準備が速くなります。

ベストプラクティス

ウォームアップは最初のロードにのみ影響する。キャッシュされたデータが後で削除された場合、次のクエリではオンデマンドで再ロードされます。

  • sync を使いすぎないようにする。多くのフィールドをプリロードしすぎると、ロード時間が長くなり、キャッシュに負担がかかります。

  • ウォームアップは控えめに開始し、頻繁にアクセスされるフィールドとインデックスに対してのみ有効にします。

  • クエリの待ち時間とキャッシュのメトリクスを監視し、必要に応じてプリロードを拡張します。

  • 作業負荷が混在している場合は、sync をパフォーマンス重視のコレクションに適用し、disable をキャパシティ重視のコレクションに適用します。

Try Managed Milvus for Free

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

Get Started
フィードバック

このページは役に立ちましたか ?