ウォームアップCompatible with Milvus 2.6.4+
MilvusのWarm Upは、コールドデータが初めてアクセスされる際に発生するファーストヒットレイテンシを緩和することで、Tiered Storageを補完します。ウォームアップを設定すると、セグメントがクエリ可能になる前に、選択されたタイプのフィールドやインデックスがキャッシュにプリロードされ、頻繁にアクセスされるデータがロード後すぐに利用できるようになります。
ウォームアップの理由
ティアード・ストレージのレイジー・ロードは、メタデータのみを最初にロードすることで効率を向上させる。しかし、必要なチャンクやインデックスをオブジェクトストレージからフェッチする必要があるため、コールドデータへの最初のクエリで待ち時間が発生する可能性があります。
ウォームアップは、セグメントの初期化中に重要なデータを積極的にキャッシュすることで、この問題を解決します。
特に以下のような場合に有効です:
特定のスカラー・インデックスがフィルター条件で頻繁に使用される。
ベクトル・インデックスは検索パフォーマンスに不可欠であり、すぐに準備する必要がある。
QueryNode 再起動後または新規セグメントロード後のコールドスタート待ち時間は容認できない。
対照的に、ウォームアップは、クエリーの頻度が低いフィールドやインデックスには推奨されません。ウォームアップを無効にすると、セグメントのロード時間が短縮され、キャッシュスペースが節約される。
構成
ウォームアップは、milvus.yaml のqueryNode.segcore.tieredStorage.warmup で制御されます。 スカラー・フィールド、スカラー・インデックス、ベクター・フィールド、およびベクター・インデックスに対して個別に設定できます。各ターゲットは2つのモードをサポートしています:
モード |
説明 |
典型的なシナリオ |
|---|---|---|
|
セグメントがクエリ可能になる前にプリロードする。ロード時間は若干長くなるが、最初のクエリに待ち時間は発生しない。 |
検索で使用される高頻度のスカラー・インデックスやキー・ベクター・インデックスなど、即座に利用可能でなければならないパフォーマンス・クリティカルなデータに使用する。 |
|
プリロードをスキップする。セグメントはより速くクエリ可能になるが、最初のクエリがオンデマンドローディングのトリガーになる可能性がある。 |
未加工のベクトルフィールドや重要でないスカラーフィールドのような、アクセス頻度の低いデータや大きなデータに使います。 |
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をキャパシティ重視のコレクションに適用します。